For your case, i.e., client <-> server, 'Server Handler' is the correct one. Look for 'sendAsyncResponse' in 'HttpCoreNIOSender'(synapse) which has access to 'NHttpServerConnection' (httpcore) and current Message Context. 

~ Indika

On Tue, Feb 14, 2012 at 11:17 PM, Jørgen Nordmoen <> wrote:
Thanks for all the feedback so far.

What you have described is exactly what we want.

Here is a image of how our setup will be:
The ESB will act as a proxy for services published on GlassFish, what
we need to do is mediate messages from the GlassFish services to the
clients and determin their priority in the network, then we have to
alter the traffic class of the "Client server connection" to correspond
with the right priority. Thanks to Indika we found these classes which
we can modify:
  • org.apache.http.nio.reactor.IOSession
    • setTrafficClass(int diffserv);
      • channel.getsocket()
    • int getTrafficClass();
  • org.apache.http.impl.nio.NHttpConnectionBase
    • setTrafficClass(int diffserv);
      • session.setTrafficClass(int diffserv)
    • int getTrafficClass();
But we are a bit confused as to the class "ClientHandler" which seems
to send request from clients to endpoints, which in our illustration
would be from Synapse to GlassFish. If anyone could clarify if this is
right or wrong would be much appreciated. If this is right then I guess
we have to alter "ServerHandler", but that doesn't seem to get any
parameters which we could alter to include the needed QoS information.
Best regards.
Jørgen Nordmoen <>, <>

On ti., 2012-02-14 at 16:52 +1100, indika

kumara wrote:

~ Indika

On Tue, Feb 14, 2012 at 3:53 PM, Hiranya Jayathilaka <> wrote:
I think this needs to be implemented almost entirely at the NHTTP transport level. You can load a set of hostname-to-traffic class mappings from a transport receiver parameter. Then as Oleg pointed out you can set the appropriate class requirements on the socket in the prepareSocket method of an extended DefaultConnectingIOReactor impl.


On Mon, Feb 13, 2012 at 6:03 PM, Jørgen Nordmoen <> wrote:
Thanks for the clarification Oleg and appologies for the duplicate
message in the HC mailing list.

Currently the bind method seems like our best bet since we need to
change the traffic class on each client connection, but we are having a
bit of a problem finding a way to interact between a mediator and the
ClientConnection. We have traced where a message is sent from the send

The problem is that we can't find  a connection between the actual
connection and the message. The message context is sent quite far down,
and is then replaced by an Axis2MessageContext, but they don't seem to
have any effect on the connecton. So is this route right when it comes to
where messages are sent?

Best regards.
Jørgen Nordmoen <>, <>

On fr., 2012-02-10 at 11:42 +0100, Oleg Kalnichevski wrote:
On Fri, 2012-02-10 at 11:24 +0100, Jørgen Nordmoen wrote:
> Thank you for your reply.
> Setting the traffic class is exactly what we need. We have to do that
> to every client connection, but also need to have control over what is
> set for each connection as the clients will get different priority
> based on our parameters. 
> We have looked into the classes you suggested, but we can't find any
> 'bind' method or anything related to the sending socket.
> Best regards.


The #bind method Indika is referring to is available in the 4.2 (DEV)
branch of HttpCore. So, you need to make sure you are using the latest
HttpCore release (4.2-beta1)

Alternatively, you could use the #prepareSocket method of the I/O
reactor class to modify properties of newly created sockets.

Hope this helps


> Jørgen Nordmoen <>, <>
> On fr., 2012-02-10 at 14:22 +1100, indika kumara wrote:
> > Hi,
> > 
> > 
> > Would setTrafficClass(int tc) of java Socket API work for you?
> > 
> > 
> > You can access the connecting Socket by overrideing 'bind' of
> > DefaultNHttpClientConnection (httpcore) in
> > LoggingNHttpClientConnection (synapse) and set tranffic class
> > 
> > 
> > Also, you can modify 'bind' method of DefaultNHttpClientConnection
> > (httpcore) to set traficclass using provided http parameters of
> > 'bind' method.
> > 
> > 
> > Note: I do not have a good knowledge abut httpcore. So, I may wrong.
> > Please check with them.
> > 
> > 
> > Thanks,
> > 
> > 
> > Indika
> > 
> > 2012/2/9 Jørgen Nordmoen <>
> >         Hello.
> >         
> >         Long explenation: We are a group of students tasked with
> >         creating a
> >         system which is able to prioritize messages in a network,
> >         our customer
> >         has asked us to use WSO2 ESB which is, as you most likely
> >         know, just
> >         Apache Synapse. We have one strict demand from the customer
> >         and that is
> >         that our system must be able to set the DiffServ field in
> >         the IP
> >         header. The system must be able to accept SOAP messages and
> >         forward
> >         them to a GlassFish server with the final endpoints. And
> >         here is our
> >         problem, since Synapse does not directly support DiffServ or
> >         TOS we
> >         need to implement it, but after much research we are still
> >         not quite
> >         sure how to do this and that is why this emails is sent. We
> >         have some
> >         leads on where we could alter,
> >         org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor
> >         could be
> >         extended in order to obtain the DiffServ value from the
> >         MessageContext
> >         and then alter the Socket connection, but we are not quite
> >         sure as we
> >         don't have the overview needed.
> >         
> >         Question: 
> >         Is there a way we could alter Synapse, Axis 2 and/or
> >         HTTPCommons in order for us to support setting different
> >         DiffServ
> >         values to different clients? Hopefully we could alter
> >         something which
> >         we could either reach or interact with from a mediator which
> >         we have to
> >         write a cuple of anyway.
> >         
> >         Best regards.
> >         Jørgen Nordmoen <>,
> >         <>
> >         
> >         
> > 
> > 

To unsubscribe, e-mail:
For additional commands, e-mail:

Hiranya Jayathilaka
Associate Technical Lead;
WSO2 Inc.;
E-mail:;  Mobile: +94 77 633 3491