Dear all,

 

>From within a webservice that runs on Axis2, I need to access some soap
header information (the <wsse:BinarySecurityToken> to be exact, I need
to find out which certificate was passed for client authentication).

 

Application architecture: I am running Intalio BPMS, which is Apache ODE
that seems to auto-create a webservice and its WSDL on Axis2 (without
programming on my side). This runs on Tomcat.

 

I do not have access to the code generated by ODE or to the integration
between ODE and Axis2 (I think...) but I can place a JAR in ODE's
classpath. Any (static) functions within that JAR are automatically
visible to ODE.

In other words, I can for instance define a jar with a static function f
that accepts as input one of my wsdl parameters and outputs something
that can be used in following steps of the ODE-managed process.

So far so good, no problems there since I've remained within the realm
of the data sent as input to the WSDL (i.e. only parameters from inside
the soap:body that are automatically available).

 

Now as mentioned I need to access the soap:header and there I've got a
problem since the bpel layer is happily unaware of the existence of such
a thing as the soap:header.

After some googling I started to think that my best bet was to add a
jar/function in ode's classpath and to call
MessageContext.getCurrentMessageContext() from there (am I correct in
assuming this or is there a better alternative?).

Unfortunately my first attempt stranded with a null coming back from it.
All functions are accessible/callable and also have the Axis2 jar's in
the same classpath directory so that should be ok. My guess is I'm in a
different thread or context due to placing it in a separate jar maybe
but how do I find out if this is true? And how can I access another
thread's information if this is the problem? The entire process spans a
single (synchronous) soap request/response dialog so I guess there
should be a message context somewhere (as the request comes in before
the call to my new jar and the response is sent out after the call to
it).

 

Any help or pointers is more than appreciated,

 

Best,

 

Christian C. Schouten

 

 

Reply via email to