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();
  }
}
  • No labels