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 Dmitriy Frolov <dm...@gmail.com> on 2008/10/02 21:35:34 UTC
Re: Async processing, client stubs thread safety and port conflicts
How should I go about extracting wsa:MessageID from the client's
asynchronous (call and transport with a separate listener) request and
response? Am I responsible for correlating messages together or does axis2
offer such functionality as well?
Thanks,
Dmitriy
On Wed, Sep 24, 2008 at 9:59 PM, Dmitriy Frolov <dm...@gmail.com>wrote:
> Thanks again for the information. I will post my findings based on POC.
>
> -Dmitriy
>
>
> On Wed, Sep 24, 2008 at 4:48 PM, Deepal Jayasinghe <de...@opensource.lk>wrote:
>
>>
>> > Deepal,
>> > Thanks for your quick response. It worked perfectly. I didn't
>> > realize that configuration was initialized multiple times.
>> Yes , whenever you create a new service client it create a new
>> configuration context.
>> >
>> > I have another question. Is client listener implemented as a server
>> > model? Meaning that once it receives a response it hands it over to
>> > another thread for processing?
>> Which listener you mean ?
>> If you are talking about the client side HTTP listener , then the answer
>> is yes. It is exactly a server.
>> >
>> > We are considering to use asynchronous client/server to reduce the
>> > load on the client and improve its throughput.
>> Yes that would be a good option , in fact Axis2 has support for NIO , so
>> you might be able to use that too.
>> >
>> > In our case we have a client application that acts more or less as a
>> > proxy and does very little processing itself. It delegate all of the
>> > work synchronously to backend web services. Responses average from
>> > several hundred milliseconds to several seconds with about 400 tps.
>> >
>> > Would you recommend asynchronous approach or could it potentially have
>> > other side affects? All of the feedback will be much appreciated.
>> I think asynchronous approach would be a good option for your
>> application. However you can try both and let us know which one is
>> better. Then we can learn from you .
>>
>> -Deepal
>> >
>> > Thanks,
>> > Dmitriy
>> >
>> > On Tue, Sep 23, 2008 at 7:03 PM, Deepal Jayasinghe
>> > <deepal@opensource.lk <ma...@opensource.lk>> wrote:
>> >
>> > Did you make two calls?
>> > If so please try to share the same configuration context.
>> >
>> > -Deepal
>> >
>> > Dmitriy Frolov wrote:
>> > > Hi all,
>> > > I am trying to utilize axis2 asynchronous processing via callback
>> > > mechanism and 2-way HTTP transport channels. The question I have
>> is
>> > > if client stub implementation is thread safe. Even though
>> > Inderi have
>> > > seen some reports that it is not, I was wong if anything changed
>> in
>> > > version 1.4.1. <http://1.4.1.> <http://1.4.1.> Assuming it is
>> > not thread safe and I
>> > > cannot share client stubs between multiple threads, is there way
>> to
>> > > reuse same separate response listener for all of the transactions?
>> > >
>> > > I have tried creating client stubs for each thread separately,
>> > but ran
>> > > into following exception:
>> > > Sep 23, 2008 6:27:14 PM
>> > >
>> >
>> org.apache.axis2.transport.http.server.DefaultConnectionListenerFailureHandler
>> > > failed
>> > > WARNING: Attempt number 1 of 10 to reestalish connection listener
>> > >
>> >
>> org.apache.axis2.transport.http.server.DefaultConnectionListener@49744974
>> > > due to failure
>> > > java.net.BindException: Address already in use: NET_Bind
>> > > at java.net.PlainSocketImpl.socketBind(Native Method)
>> > > at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:398)
>> > > at java.net.ServerSocket.bind(ServerSocket.java:331)
>> > > at java.net.ServerSocket.<init>(ServerSocket.java:197)
>> > > at java.net.ServerSocket.<init>(ServerSocket.java:109)
>> > > at
>> > >
>> >
>> org.apache.axis2.transport.http.server.DefaultConnectionListener.run(DefaultConnectionListener.java:72)
>> > > at
>> > >
>> >
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
>> > > at
>> > >
>> >
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
>> > >
>> > >
>> > > Also if there is no way to use one listener for all of the
>> > responses,
>> > > are there any optimization techniques that can be utilized like
>> > a pool
>> > > of listeners for high volume system (~400tps)? Creating a
>> listener
>> > > every time could be rather expensive.
>> > >
>> > > Thanks,
>> > > Dmitriy
>> >
>> > --
>> > Thank you!
>> >
>> >
>> > http://blogs.deepal.org
>> >
>> >
>> >
>> ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> > <ma...@ws.apache.org>
>> > For additional commands, e-mail: axis-user-help@ws.apache.org
>> > <ma...@ws.apache.org>
>> >
>> >
>>
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>
>>
>