The WebserviceContext interface is part of the JAX-WS specification. It allows you to access several context informations the runtime has associated to your service call.

 The following code fragment show how to use some parts of the WebserviceContext.

import javax.xml.ws.WebServiceContext;
 
public class CustomerServiceImpl implements CustomerService {
  @Resource
  WebServiceContext wsContext;
 
  public List<Customer> getCustomersByName(String name) throws NoSuchCustomerException {
    Principal pr = wsContext.getUserPrincipal();
 
    // Only joe may access this service operation
    if (pr == null || !"joe".equals(pr.getName())) {
      throw new RuntimeException("Access denied");
    }
 
    // Only the sales role may access this operation
    if (!wsContext.isUserInRole("sales")) {
      throw new RuntimeException("Access denied");
    }
 
    MessageContext mContext = wsContext.getMessageContext();
 
    // See which contents the message context has
    Set<String> s = mContext.keySet();
 
    // Using this cxf specific code you can access the CXF Message and Exchange objects
    WrappedMessageContext wmc = (WrappedMessageContext)mContext;
    Message m = wmc.getWrappedMessage();
    Exchange ex = m.getExchange();
  }
}