Thanks for the advice. I can see the problem now and it's the EJB pooling which will force a different thread. What I need to do is to use the messageContext to access the HHTP headers so I can dig out a sessionid to do some state tracking with in the current application. I guess I can force the client to supply a session id as a param. Adam
_____ From: Afkham Azeez [mailto:[EMAIL PROTECTED] Sent: 22 January 2008 18:19 To: axis-user@ws.apache.org Subject: Re: getCurrentMessageContext() returns null when invoked from an EJB? The problem is that the current MessageContext is store in a ThreadLocal of the thread that received the Web service request. It is possible that this is not the same thread that is running within the EJB. The EJB is within the control of the AppServer. The AppServer maintains a pool of bean instances and handles thread allocation. Therefore, the thread that received the Web service request, and the EJB thread that runs you bean are two different threads. So MessageContext.getCurrentMessageContext() will return null within the EJB implementation object. May I ask, why are you trying to access the MessageContext within an EJB? MessageContext is an Axis2 level concept. Why are you burning that into your EJB, which should be independent from the Axis2 Web service framework. HTH Azeez On Jan 22, 2008 8:29 PM, Etches, Adam (GE Infra, Energy) <[EMAIL PROTECTED]> wrote: Hi, The Axis jars are in the lib directory of the axis2 project and the ejb jar definition has a class path property in the manifest.mf to load them from <axis2_home>/lib directory. The call to the ejb is from the same JVM as the web service so the calls are all 'ejb local'. I have followed the steps documented in the guide http://ws.apache.org/axis2/1_2/ejb-provider.html and I have reproduced the problem on this example. All I did was to add the messagecontext call to the HelloBean.java sayHello method : MessageContext msgCtx = MessageContext.getCurrentMessageContext(); System.err.print(msgCtx); Then I modified the HelloBean's ejb manifest.mf to include a class path for axis2-kernel-1.3.jar and axiom-api-1.2.5.jar and deployed this bean in JBOSS. When I execute this service the print from STDOUT reports the msgCtx as null. It's getting a bit frustrating now. Adam _____ From: Andreas Veithen [mailto:[EMAIL PROTECTED] Sent: 21 January 2008 21:49 To: axis-user@ws.apache.org Subject: Re: getCurrentMessageContext() returns null when invoked from an EJB? Hi, MessageContext stores the current message context in a ThreadLocal. To be able to retrieve it, two conditions must be met: 1) The Axis JARs must be loaded from the same class loader. 2) MessageContext#getCurrentMessageContext must be called from within the thread that received the request. For point 1: Where did you put the Axis JARs? For point 2: I'm not very familiar with EJBs, but it might be that this is the case only if the EJB is called through its local interface. Regards, Andreas On 21 Jan 2008, at 15:39, Etches, Adam (GE Infra, Energy) wrote: Hi all first time posting... I have been looking at implementing web services in axis2-1.3 with EJB 2.1. I need to get a handle on the message from with in the service implementation. I believe the correct approach for this is to invoke the method getCurrentMessageContext() on MessageContext from with in the service. I have tried this in a test pojo service which correctly returns the message context but when called *BUT* when invoking this method from an EJB null is returned. Does anyone know why the getCurrentMessageContext() returns null when invoked from an EJB? thanks Adam -- Thanks Afkham Azeez http://www.wso2.org GPG Fingerprint: 643F C2AF EB78 F886 40C9 B2A2 4AE2 C887 665E 0760