You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Michele Mazzucco <Mi...@ncl.ac.uk> on 2006/08/18 16:45:05 UTC

Re: [Axis2] multiple ServiceClients problem -- is it a bug???

Hi again,

unfortunately I cannot found a suitable solution for my problem. [1]  
provides two possible solutions:
1 - use a single sender object for all threads: this is not possible  
since I want to send messages concurrently
2 - create multiple senders using the same configuration context.

According to the second option, the configuration context I'm using is
ConfigurationContext configurationContext =  
ConfigurationContextFactory.createConfigurationContextFromFileSystem 
(null, null);
		
HttpClient httpClient = new HttpClient(new  
MultiThreadedHttpConnectionManager());
configurationContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,  
Boolean.TRUE);
configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT,  
httpClient);

Now all senders should be able to send messages concurrently  
(theoretically), but unfortunately they incur in a  
ConcurrentModificationException
when they try to engage the addressing module (there is no way, at  
least on first instance, to synchronize this operation):

Exception in thread "pool-1-thread-1"  
java.util.ConcurrentModificationException
      [java]     at java.util.AbstractList$Itr.checkForComodification 
(AbstractList.java:449)
      [java]     at java.util.AbstractList$Itr.next(AbstractList.java: 
420)
      [java]     at org.apache.axis2.engine.Phase.addHandler 
(Phase.java:136)
      [java]     at  
org.apache.axis2.phaseresolver.PhaseHolder.addHandler 
(PhaseHolder.java:64)
      [java]     at  
org.apache.axis2.phaseresolver.PhaseResolver.engageModuleToOperation 
(PhaseResolver.java:191)
      [java]     at  
org.apache.axis2.description.AxisOperation.engageModuleToOperation 
(AxisOperation.java:154)
      [java]     at  
org.apache.axis2.description.AxisOperation.engageModule 
(AxisOperation.java:128)
      [java]     at  
org.apache.axis2.description.AxisService.engageModule 
(AxisService.java:479)
      [java]     at org.apache.axis2.client.ServiceClient.engageModule 
(ServiceClient.java:271)
      [java]     at ncl.qosp.test.functional.client.Sender.run 
(Sender.java:138)
      [java]     at java.util.concurrent.ThreadPoolExecutor 
$Worker.runTask(ThreadPoolExecutor.java:650)
      [java]     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
(ThreadPoolExecutor.java:675)
      [java]     at java.lang.Thread.run(Thread.java:613)


Is this a bug?


Regards,
Michele



[1] http://www.wso2.net/kb/165
On 17 Aug 2006, at 15:32, Michele Mazzucco wrote:

> Hi all,
>
> I have to spare some threads, and each of them creates a new
> ServiceClient object in order to send messages. Now the problem is  
> that
> they fail, since they try to use the same port (I guess). Is there any
> possibility to specify which port should they use?
>
> Thanks,
> Michele
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: [Axis2] multiple ServiceClients problem -- is it a bug???

Posted by Michele Mazzucco <Mi...@ncl.ac.uk>.
Jira AXIS2-1053 created.

Regards,
Michele

On 18 Aug 2006, at 20:07, Eran Chinthaka wrote:

> Can you create an issue out of this, explaining or better attaching  
> some
> tests or code for us to re-gen the problem?
>
> Thanks,
> Chinthaka
>
> Michele Mazzucco wrote:
>> Hi again,
>>
>> unfortunately I cannot found a suitable solution for my problem. [1]
>> provides two possible solutions:
>> 1 - use a single sender object for all threads: this is not possible
>> since I want to send messages concurrently
>> 2 - create multiple senders using the same configuration context.
>>
>> According to the second option, the configuration context I'm  
>> using is
>> ConfigurationContext configurationContext =
>> ConfigurationContextFactory.createConfigurationContextFromFileSystem( 
>> null,
>> null);
>>
>> HttpClient httpClient = new HttpClient(new
>> MultiThreadedHttpConnectionManager());
>> configurationContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
>> Boolean.TRUE);
>> configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT,
>> httpClient);
>>
>> Now all senders should be able to send messages concurrently
>> (theoretically), but unfortunately they incur in a
>> ConcurrentModificationException
>> when they try to engage the addressing module (there is no way, at  
>> least
>> on first instance, to synchronize this operation):
>>
>> Exception in thread "pool-1-thread-1"
>> java.util.ConcurrentModificationException
>>      [java]     at
>> java.util.AbstractList$Itr.checkForComodification 
>> (AbstractList.java:449)
>>      [java]     at java.util.AbstractList$Itr.next 
>> (AbstractList.java:420)
>>      [java]     at org.apache.axis2.engine.Phase.addHandler 
>> (Phase.java:136)
>>      [java]     at
>> org.apache.axis2.phaseresolver.PhaseHolder.addHandler 
>> (PhaseHolder.java:64)
>>      [java]     at
>> org.apache.axis2.phaseresolver.PhaseResolver.engageModuleToOperation( 
>> PhaseResolver.java:191)
>>
>>      [java]     at
>> org.apache.axis2.description.AxisOperation.engageModuleToOperation 
>> (AxisOperation.java:154)
>>
>>      [java]     at
>> org.apache.axis2.description.AxisOperation.engageModule 
>> (AxisOperation.java:128)
>>
>>      [java]     at
>> org.apache.axis2.description.AxisService.engageModule 
>> (AxisService.java:479)
>>      [java]     at
>> org.apache.axis2.client.ServiceClient.engageModule 
>> (ServiceClient.java:271)
>>      [java]     at
>> ncl.qosp.test.functional.client.Sender.run(Sender.java:138)
>>      [java]     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask 
>> (ThreadPoolExecutor.java:650)
>>
>>      [java]     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run 
>> (ThreadPoolExecutor.java:675)
>>
>>      [java]     at java.lang.Thread.run(Thread.java:613)
>>
>>
>> Is this a bug?
>>
>>
>> Regards,
>> Michele
>>
>>
>>
>> [1] http://www.wso2.net/kb/165
>> On 17 Aug 2006, at 15:32, Michele Mazzucco wrote:
>>
>>> Hi all,
>>>
>>> I have to spare some threads, and each of them creates a new
>>> ServiceClient object in order to send messages. Now the problem  
>>> is that
>>> they fail, since they try to use the same port (I guess). Is  
>>> there any
>>> possibility to specify which port should they use?
>>>
>>> Thanks,
>>> Michele
>>>
>>> -------------------------------------------------------------------- 
>>> -
>>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>
>>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: [Axis2] multiple ServiceClients problem -- is it a bug???

Posted by Eran Chinthaka <ch...@opensource.lk>.
Can you create an issue out of this, explaining or better attaching some
tests or code for us to re-gen the problem?

Thanks,
Chinthaka

Michele Mazzucco wrote:
> Hi again,
> 
> unfortunately I cannot found a suitable solution for my problem. [1]
> provides two possible solutions:
> 1 - use a single sender object for all threads: this is not possible
> since I want to send messages concurrently
> 2 - create multiple senders using the same configuration context.
> 
> According to the second option, the configuration context I'm using is
> ConfigurationContext configurationContext =
> ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,
> null);
>        
> HttpClient httpClient = new HttpClient(new
> MultiThreadedHttpConnectionManager());
> configurationContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
> Boolean.TRUE);
> configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT,
> httpClient);
> 
> Now all senders should be able to send messages concurrently
> (theoretically), but unfortunately they incur in a
> ConcurrentModificationException
> when they try to engage the addressing module (there is no way, at least
> on first instance, to synchronize this operation):
> 
> Exception in thread "pool-1-thread-1"
> java.util.ConcurrentModificationException
>      [java]     at
> java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
>      [java]     at java.util.AbstractList$Itr.next(AbstractList.java:420)
>      [java]     at org.apache.axis2.engine.Phase.addHandler(Phase.java:136)
>      [java]     at
> org.apache.axis2.phaseresolver.PhaseHolder.addHandler(PhaseHolder.java:64)
>      [java]     at
> org.apache.axis2.phaseresolver.PhaseResolver.engageModuleToOperation(PhaseResolver.java:191)
> 
>      [java]     at
> org.apache.axis2.description.AxisOperation.engageModuleToOperation(AxisOperation.java:154)
> 
>      [java]     at
> org.apache.axis2.description.AxisOperation.engageModule(AxisOperation.java:128)
> 
>      [java]     at
> org.apache.axis2.description.AxisService.engageModule(AxisService.java:479)
>      [java]     at
> org.apache.axis2.client.ServiceClient.engageModule(ServiceClient.java:271)
>      [java]     at
> ncl.qosp.test.functional.client.Sender.run(Sender.java:138)
>      [java]     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> 
>      [java]     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> 
>      [java]     at java.lang.Thread.run(Thread.java:613)
> 
> 
> Is this a bug?
> 
> 
> Regards,
> Michele
> 
> 
> 
> [1] http://www.wso2.net/kb/165
> On 17 Aug 2006, at 15:32, Michele Mazzucco wrote:
> 
>> Hi all,
>>
>> I have to spare some threads, and each of them creates a new
>> ServiceClient object in order to send messages. Now the problem is that
>> they fail, since they try to use the same port (I guess). Is there any
>> possibility to specify which port should they use?
>>
>> Thanks,
>> Michele
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 
>