- First create a Stateless bean as shown below:
@Stateless (mappedName = "TestSecureWebService")
@WebService (targetNamespace = "http://webservice.duman.ozay.com/", serviceName = "TestSecureWebService")
public class TestSecureWebService implements TestSecureWebServiceRemote {
@Resource
private WebServiceContext webServiceContext;
@Override
@RolesAllowed({"CallServiceAccessRight"})
@WebMethod(operationName = "sampleSecureServiceSorgula")
@WebResult(name = "TestSecureService")
public String secureServiceMethod(String name) {
MessageContext messageContext = webServiceContext.getMessageContext();
javax.servlet.http.HttpServletRequest httpRequest = (javax.servlet.http.HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST);
String userName = httpRequest.getRemoteUser();
return "http basic auth. web service method called by " + userName;
}
}
To test this service you can simply use SOAP UI passing the service credentials or write a web service client as follows:
public class WSClientMain {
public static void main(String[] args) {
TestSecureWebService service =new TestSecureWebService();
TestSecureWebServicePort port = service.getTestSecureWebServiceservicePort();
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
rc.put(BindingProvider.USERNAME_PROPERTY, "user1");
rc.put(BindingProvider.PASSWORD_PROPERTY, "testuser");
String result= port.secureServiceMethod("abc");
System.err.println(result);
}
}