Maria Sanchez [
http://community.jboss.org/people/mesanchez] created the discussion
"Is there a way to access the information send in the SOAPHeader within an endpoint
EJB?"
To view the discussion, visit:
http://community.jboss.org/message/552588#552588
--------------------------------------------------------------
I have installed JBoss6.0.0M3 which deploys woth JBossws3.3.0.
I am trying to see if it is possible to access the information passed as part of the SOAP
header within the endpoint EJB. I have been able to use handlers to manipulate the SOAP
Message, but I am not able to find information regarding access from the EJB.
There are some pages that indicate that this is possible using the SessionContext. The
handlers set some attributes that are later accessed from the EJB, this would work but I
do not find any code that I could use as a reference. Any ideas? Code examples?
This is the code I found but it has problems:
public class MyMessageHandler extends
javax.xml.rpc.handler.GenericHandler {
public boolean handleRequest(MessageContext mc) {
SOAPMessage msg = ((SOAPMessageContext)mc).getMessage() ;
SOAPPart sp = msg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPHeader header = se.getHeader();
SOAPBody body = se.getBody();
if (header == null) {
// raise error
}
for (Iterator iter = header.getChildElements();
iter.hasNext();) {
SOAPElement element = (SOAPElement) iter.next();
if (element.getElementName().getLocalName()
.equals("PriorityProcessing")) {
mc.setProperty("PriorityProcessing",
element.getValue());
}
}
...
return true;
}
#
| *Code Example 8.6* Passing Context Information from Handler to Endpoint
|
Then, you can get access to MessageContext in the endpoint that receives the request. For
an EJB service endpoint, MessageContext is available with the bean'sSessionContext.
http://java.sun.com/blueprints/guidelines/designing_webservices/html/arch...
Code Example 8.7 shows the enterprise bean code for the endpoint.
public class EndpointBean implements SessionBean {
private SessionContext sc;
public void businessMethod() {
MessageContext msgc= sc.getMessageContext();
String s = (String)msgc.getProperty("PriorityProcessing");
Boolean priority = new Boolean(s);
...
}
public void setSessionContext(SessionContext sc) {
this.sc = sc;
}
...
}
#
| *Code Example 8.7* Endpoint Receiving Context Information from a Handler
|
When I do this SessionContext object is null
Thanks,
Maria
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/552588#552588]
Start a new discussion in JBoss Web Services at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]