Re: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-02-01 Thread Philipp Leitner
Not sure about that - I reckon you can transfer any type of attachment 
using MTOM (not only binary), but I actually never tried that so far.


What I meant with 'split the huge invocation' is simply that you do not 
transfer all results of your query at one time, but over a few 
consequent invocations.


I.e. clients would not invoke a 'get me all IDs to my query' method, but 
rather something like 'get me the first 10.000 results to this query', 
process these results, then send 'get me the second 10.000 results to 
this query' ... and so on. IMHO that's the generally accepted way of 
dealing with big datasets, even outside the area of Web services.


/philipp

Raghu Upadhyayula schrieb:

Thanks for your reply Narayan.

 

So, if I have to use mtom then I need to change my method to return the 
attachment (xsd:base64binary) instead of returning the long[] right?


 


Thanks

Raghu



*From:* Narayan S Dhillon [mailto:[EMAIL PROTECTED]
*Sent:* Thursday, January 31, 2008 3:11 PM
*To:* axis-user@ws.apache.org
*Subject:* Re: [Axis2] Webservices - 100% Memory and CPU usage 
(OutOfMemoryError) on API call


 


if you transferring heavy data oevr the wire, consider using mtom.

On 31/01/2008, *Philipp Leitner* [EMAIL PROTECTED] 
mailto:[EMAIL PROTECTED] wrote:


Still not sure whether you expirience the exception on client or server
side.

However: 300.000 longs do seem like a lot of elements to transport at
once. I would not be surprised if such a huge array simply leads to
memory problems during wrapping/unwrapping.

Best solution (if that is indeed the problem) would be to split the one
huge invocation into a number of smaller ones (or increasing the heap
size to  avoid memory problems, but that's probably just a temporary fix).

100% CPU does not seem very uncommon to me - I have seen similar
behavior during wrapping/unwrapping of big SOAP messages. XML processing
is expensive in terms of CPU cycles.

/philipp


Raghu Upadhyayula schrieb:

 Hi Phillip,

I think there were around 300,000 elements in the long[] when I ran
 into this issue.

I suppose, the exception happens in the app logic, I haven't tried
 it on my local machine yet (the error happened on one of our QA
 servers).

In the application logic, what I do is, execute a query, loop
 through the result set, store the results in a ListLong as I don't
 know how many rows are in the result set, and then loop through the
 ListLong and store then in the long[] and return the long[] back to
 the client.

 Thanks
 Raghu
 -Original Message-
 From: Philipp Leitner [mailto:[EMAIL PROTECTED] 

mailto:[EMAIL PROTECTED]]

 Sent: Thursday, January 31, 2008 5:05 AM
 To: axis-user@ws.apache.org mailto:axis-user@ws.apache.org
 Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
 (OutOfMemoryError) on API call

 How many elements are there in your long[] when you run out of memory?
 When exactly does the exception happen (in your app logic, during
 wrapping, during transmission, on client side?).

 /philipp

 Raghu Upadhyayula schrieb:
 Hi,



 I have a webservice API call which is using 100% of Memory  CPU and
 throwing an OutOfMemoryError (I'm using Axis2 1.3).



 My webservice call returns a long array.



 Here is the signature of my webservice API.



 *public long[] getIds(Calendar startDate, Calendar endDate) throws
 Exception; *



 Based on the given startDate  endDate, I retrieve the corresponding
 records from the database and store the ids in a long array and return

 the long array to the client.



 If the number of records is more, I'm having the issue of 100% memory
 /
 CPU usage or OutOfMemoryError.



 Does anyone of you have any ideas on how to overcome this issue?



 Thanks

 Raghu


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED] 

mailto:[EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED] 

mailto:[EMAIL PROTECTED]



 -
 To unsubscribe, e-mail: [EMAIL PROTECTED] 

mailto:[EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED] 

mailto:[EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED] 
mailto:[EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED] 
mailto:[EMAIL PROTECTED]


 



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-01-31 Thread Philipp Leitner
Still not sure whether you expirience the exception on client or server 
side.


However: 300.000 longs do seem like a lot of elements to transport at 
once. I would not be surprised if such a huge array simply leads to 
memory problems during wrapping/unwrapping.


Best solution (if that is indeed the problem) would be to split the one 
huge invocation into a number of smaller ones (or increasing the heap 
size to  avoid memory problems, but that's probably just a temporary fix).


100% CPU does not seem very uncommon to me - I have seen similar 
behavior during wrapping/unwrapping of big SOAP messages. XML processing 
is expensive in terms of CPU cycles.


/philipp


Raghu Upadhyayula schrieb:

Hi Phillip,

I think there were around 300,000 elements in the long[] when I ran
into this issue.

I suppose, the exception happens in the app logic, I haven't tried

it on my local machine yet (the error happened on one of our QA
servers).

In the application logic, what I do is, execute a query, loop

through the result set, store the results in a ListLong as I don't
know how many rows are in the result set, and then loop through the
ListLong and store then in the long[] and return the long[] back to
the client.

Thanks
Raghu
-Original Message-
From: Philipp Leitner [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 31, 2008 5:05 AM

To: axis-user@ws.apache.org
Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
(OutOfMemoryError) on API call

How many elements are there in your long[] when you run out of memory? 
When exactly does the exception happen (in your app logic, during 
wrapping, during transmission, on client side?).


/philipp

Raghu Upadhyayula schrieb:

Hi,

 

I have a webservice API call which is using 100% of Memory  CPU and 
throwing an OutOfMemoryError (I'm using Axis2 1.3).


 


My webservice call returns a long array.

 


Here is the signature of my webservice API.

 

*public long[] getIds(Calendar startDate, Calendar endDate) throws 
Exception; *


 

Based on the given startDate  endDate, I retrieve the corresponding 
records from the database and store the ids in a long array and return



the long array to the client.

 


If the number of records is more, I'm having the issue of 100% memory
/ 

CPU usage or OutOfMemoryError.

 


Does anyone of you have any ideas on how to overcome this issue?

 


Thanks

Raghu



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-01-31 Thread Raghu Upadhyayula
Hi Phillip,

I'm experiencing this on the server side when executing my query
 storing the results in the long[].

As you said one of the solution could be to split one huge
invocation into a number of smaller ones, can you explain that a bit.

Are you saying that I need to restrict the number of elements
returned in the long[] to a smaller number.

Thanks
Raghu

-Original Message-
From: Philipp Leitner [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 31, 2008 2:27 PM
To: axis-user@ws.apache.org
Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
(OutOfMemoryError) on API call

Still not sure whether you expirience the exception on client or server 
side.

However: 300.000 longs do seem like a lot of elements to transport at 
once. I would not be surprised if such a huge array simply leads to 
memory problems during wrapping/unwrapping.

Best solution (if that is indeed the problem) would be to split the one 
huge invocation into a number of smaller ones (or increasing the heap 
size to  avoid memory problems, but that's probably just a temporary
fix).

100% CPU does not seem very uncommon to me - I have seen similar 
behavior during wrapping/unwrapping of big SOAP messages. XML processing

is expensive in terms of CPU cycles.

/philipp


Raghu Upadhyayula schrieb:
 Hi Phillip,
 
 I think there were around 300,000 elements in the long[] when I
ran
 into this issue.
 
 I suppose, the exception happens in the app logic, I haven't tried
 it on my local machine yet (the error happened on one of our QA
 servers).
 
 In the application logic, what I do is, execute a query, loop
 through the result set, store the results in a ListLong as I don't
 know how many rows are in the result set, and then loop through the
 ListLong and store then in the long[] and return the long[] back to
 the client.
 
 Thanks
 Raghu
 -Original Message-
 From: Philipp Leitner [mailto:[EMAIL PROTECTED] 
 Sent: Thursday, January 31, 2008 5:05 AM
 To: axis-user@ws.apache.org
 Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
 (OutOfMemoryError) on API call
 
 How many elements are there in your long[] when you run out of memory?

 When exactly does the exception happen (in your app logic, during 
 wrapping, during transmission, on client side?).
 
 /philipp
 
 Raghu Upadhyayula schrieb:
 Hi,

  

 I have a webservice API call which is using 100% of Memory  CPU and 
 throwing an OutOfMemoryError (I'm using Axis2 1.3).

  

 My webservice call returns a long array.

  

 Here is the signature of my webservice API.

  

 *public long[] getIds(Calendar startDate, Calendar endDate) throws 
 Exception; *

  

 Based on the given startDate  endDate, I retrieve the corresponding 
 records from the database and store the ids in a long array and
return
 
 the long array to the client.

  

 If the number of records is more, I'm having the issue of 100% memory
 / 
 CPU usage or OutOfMemoryError.

  

 Does anyone of you have any ideas on how to overcome this issue?

  

 Thanks

 Raghu

 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-01-31 Thread Narayan S Dhillon
if you transferring heavy data oevr the wire, consider using mtom.

On 31/01/2008, Philipp Leitner [EMAIL PROTECTED] wrote:

 Still not sure whether you expirience the exception on client or server
 side.

 However: 300.000 longs do seem like a lot of elements to transport at
 once. I would not be surprised if such a huge array simply leads to
 memory problems during wrapping/unwrapping.

 Best solution (if that is indeed the problem) would be to split the one
 huge invocation into a number of smaller ones (or increasing the heap
 size to  avoid memory problems, but that's probably just a temporary fix).

 100% CPU does not seem very uncommon to me - I have seen similar
 behavior during wrapping/unwrapping of big SOAP messages. XML processing
 is expensive in terms of CPU cycles.

 /philipp


 Raghu Upadhyayula schrieb:
  Hi Phillip,
 
  I think there were around 300,000 elements in the long[] when I ran
  into this issue.
 
  I suppose, the exception happens in the app logic, I haven't tried
  it on my local machine yet (the error happened on one of our QA
  servers).
 
  In the application logic, what I do is, execute a query, loop
  through the result set, store the results in a ListLong as I don't
  know how many rows are in the result set, and then loop through the
  ListLong and store then in the long[] and return the long[] back to
  the client.
 
  Thanks
  Raghu
  -Original Message-
  From: Philipp Leitner [mailto:[EMAIL PROTECTED]
  Sent: Thursday, January 31, 2008 5:05 AM
  To: axis-user@ws.apache.org
  Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
  (OutOfMemoryError) on API call
 
  How many elements are there in your long[] when you run out of memory?
  When exactly does the exception happen (in your app logic, during
  wrapping, during transmission, on client side?).
 
  /philipp
 
  Raghu Upadhyayula schrieb:
  Hi,
 
 
 
  I have a webservice API call which is using 100% of Memory  CPU and
  throwing an OutOfMemoryError (I'm using Axis2 1.3).
 
 
 
  My webservice call returns a long array.
 
 
 
  Here is the signature of my webservice API.
 
 
 
  *public long[] getIds(Calendar startDate, Calendar endDate) throws
  Exception; *
 
 
 
  Based on the given startDate  endDate, I retrieve the corresponding
  records from the database and store the ids in a long array and return
 
  the long array to the client.
 
 
 
  If the number of records is more, I'm having the issue of 100% memory
  /
  CPU usage or OutOfMemoryError.
 
 
 
  Does anyone of you have any ideas on how to overcome this issue?
 
 
 
  Thanks
 
  Raghu
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




RE: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-01-31 Thread Raghu Upadhyayula
Thanks for your reply Narayan.

 

So, if I have to use mtom then I need to change my method to return the
attachment (xsd:base64binary) instead of returning the long[] right?

 

Thanks

Raghu



From: Narayan S Dhillon [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 31, 2008 3:11 PM
To: axis-user@ws.apache.org
Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
(OutOfMemoryError) on API call

 

if you transferring heavy data oevr the wire, consider using mtom.

On 31/01/2008, Philipp Leitner [EMAIL PROTECTED] wrote:

Still not sure whether you expirience the exception on client or server
side.

However: 300.000 longs do seem like a lot of elements to transport at
once. I would not be surprised if such a huge array simply leads to
memory problems during wrapping/unwrapping.

Best solution (if that is indeed the problem) would be to split the one
huge invocation into a number of smaller ones (or increasing the heap
size to  avoid memory problems, but that's probably just a temporary
fix).

100% CPU does not seem very uncommon to me - I have seen similar
behavior during wrapping/unwrapping of big SOAP messages. XML processing
is expensive in terms of CPU cycles.

/philipp


Raghu Upadhyayula schrieb:
 Hi Phillip,

 I think there were around 300,000 elements in the long[] when I
ran
 into this issue.

 I suppose, the exception happens in the app logic, I haven't tried
 it on my local machine yet (the error happened on one of our QA
 servers).

 In the application logic, what I do is, execute a query, loop
 through the result set, store the results in a ListLong as I don't
 know how many rows are in the result set, and then loop through the
 ListLong and store then in the long[] and return the long[] back to
 the client.

 Thanks
 Raghu
 -Original Message-
 From: Philipp Leitner [mailto:[EMAIL PROTECTED]
 Sent: Thursday, January 31, 2008 5:05 AM
 To: axis-user@ws.apache.org
 Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
 (OutOfMemoryError) on API call

 How many elements are there in your long[] when you run out of memory?
 When exactly does the exception happen (in your app logic, during
 wrapping, during transmission, on client side?).

 /philipp

 Raghu Upadhyayula schrieb:
 Hi,



 I have a webservice API call which is using 100% of Memory  CPU and
 throwing an OutOfMemoryError (I'm using Axis2 1.3).



 My webservice call returns a long array.



 Here is the signature of my webservice API.



 *public long[] getIds(Calendar startDate, Calendar endDate) throws
 Exception; *



 Based on the given startDate  endDate, I retrieve the corresponding
 records from the database and store the ids in a long array and
return

 the long array to the client.



 If the number of records is more, I'm having the issue of 100% memory
 /
 CPU usage or OutOfMemoryError.



 Does anyone of you have any ideas on how to overcome this issue?



 Thanks

 Raghu


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

 



Re: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-01-31 Thread Martin Gainty
Thats alot of longs!

Take a look at implementing a binding depending on returned
datatype..fastest processing for
returning voids, interface objects works best with JAXB
returning Strings and doubles use ADB
http://wso2.org/library/588#resources

HTH
M-
- Original Message -
From: Philipp Leitner [EMAIL PROTECTED]
To: axis-user@ws.apache.org
Sent: Thursday, January 31, 2008 5:26 PM
Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
(OutOfMemoryError) on API call


 Still not sure whether you expirience the exception on client or server
 side.

 However: 300.000 longs do seem like a lot of elements to transport at
 once. I would not be surprised if such a huge array simply leads to
 memory problems during wrapping/unwrapping.

 Best solution (if that is indeed the problem) would be to split the one
 huge invocation into a number of smaller ones (or increasing the heap
 size to  avoid memory problems, but that's probably just a temporary fix).

 100% CPU does not seem very uncommon to me - I have seen similar
 behavior during wrapping/unwrapping of big SOAP messages. XML processing
 is expensive in terms of CPU cycles.

 /philipp


 Raghu Upadhyayula schrieb:
  Hi Phillip,
 
  I think there were around 300,000 elements in the long[] when I ran
  into this issue.
 
  I suppose, the exception happens in the app logic, I haven't tried
  it on my local machine yet (the error happened on one of our QA
  servers).
 
  In the application logic, what I do is, execute a query, loop
  through the result set, store the results in a ListLong as I don't
  know how many rows are in the result set, and then loop through the
  ListLong and store then in the long[] and return the long[] back to
  the client.
 
  Thanks
  Raghu
  -Original Message-
  From: Philipp Leitner [mailto:[EMAIL PROTECTED]
  Sent: Thursday, January 31, 2008 5:05 AM
  To: axis-user@ws.apache.org
  Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
  (OutOfMemoryError) on API call
 
  How many elements are there in your long[] when you run out of memory?
  When exactly does the exception happen (in your app logic, during
  wrapping, during transmission, on client side?).
 
  /philipp
 
  Raghu Upadhyayula schrieb:
  Hi,
 
 
 
  I have a webservice API call which is using 100% of Memory  CPU and
  throwing an OutOfMemoryError (I'm using Axis2 1.3).
 
 
 
  My webservice call returns a long array.
 
 
 
  Here is the signature of my webservice API.
 
 
 
  *public long[] getIds(Calendar startDate, Calendar endDate) throws
  Exception; *
 
 
 
  Based on the given startDate  endDate, I retrieve the corresponding
  records from the database and store the ids in a long array and return
 
  the long array to the client.
 
 
 
  If the number of records is more, I'm having the issue of 100% memory
  /
  CPU usage or OutOfMemoryError.
 
 
 
  Does anyone of you have any ideas on how to overcome this issue?
 
 
 
  Thanks
 
  Raghu
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: [Axis2] Webservices - 100% Memory and CPU usage (OutOfMemoryError) on API call

2008-01-31 Thread Raghu Upadhyayula
Hi Martin,

I am using ADB data binding.

Thanks
Raghu

-Original Message-
From: Martin Gainty [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 31, 2008 4:03 PM
To: axis-user@ws.apache.org
Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
(OutOfMemoryError) on API call

Thats alot of longs!

Take a look at implementing a binding depending on returned
datatype..fastest processing for
returning voids, interface objects works best with JAXB
returning Strings and doubles use ADB
http://wso2.org/library/588#resources

HTH
M-
- Original Message -
From: Philipp Leitner [EMAIL PROTECTED]
To: axis-user@ws.apache.org
Sent: Thursday, January 31, 2008 5:26 PM
Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
(OutOfMemoryError) on API call


 Still not sure whether you expirience the exception on client or
server
 side.

 However: 300.000 longs do seem like a lot of elements to transport at
 once. I would not be surprised if such a huge array simply leads to
 memory problems during wrapping/unwrapping.

 Best solution (if that is indeed the problem) would be to split the
one
 huge invocation into a number of smaller ones (or increasing the heap
 size to  avoid memory problems, but that's probably just a temporary
fix).

 100% CPU does not seem very uncommon to me - I have seen similar
 behavior during wrapping/unwrapping of big SOAP messages. XML
processing
 is expensive in terms of CPU cycles.

 /philipp


 Raghu Upadhyayula schrieb:
  Hi Phillip,
 
  I think there were around 300,000 elements in the long[] when I
ran
  into this issue.
 
  I suppose, the exception happens in the app logic, I haven't
tried
  it on my local machine yet (the error happened on one of our QA
  servers).
 
  In the application logic, what I do is, execute a query, loop
  through the result set, store the results in a ListLong as I don't
  know how many rows are in the result set, and then loop through the
  ListLong and store then in the long[] and return the long[] back
to
  the client.
 
  Thanks
  Raghu
  -Original Message-
  From: Philipp Leitner [mailto:[EMAIL PROTECTED]
  Sent: Thursday, January 31, 2008 5:05 AM
  To: axis-user@ws.apache.org
  Subject: Re: [Axis2] Webservices - 100% Memory and CPU usage
  (OutOfMemoryError) on API call
 
  How many elements are there in your long[] when you run out of
memory?
  When exactly does the exception happen (in your app logic, during
  wrapping, during transmission, on client side?).
 
  /philipp
 
  Raghu Upadhyayula schrieb:
  Hi,
 
 
 
  I have a webservice API call which is using 100% of Memory  CPU
and
  throwing an OutOfMemoryError (I'm using Axis2 1.3).
 
 
 
  My webservice call returns a long array.
 
 
 
  Here is the signature of my webservice API.
 
 
 
  *public long[] getIds(Calendar startDate, Calendar endDate) throws
  Exception; *
 
 
 
  Based on the given startDate  endDate, I retrieve the
corresponding
  records from the database and store the ids in a long array and
return
 
  the long array to the client.
 
 
 
  If the number of records is more, I'm having the issue of 100%
memory
  /
  CPU usage or OutOfMemoryError.
 
 
 
  Does anyone of you have any ideas on how to overcome this issue?
 
 
 
  Thanks
 
  Raghu
 
 
 
-
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
-
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]