Hi everyone, I'm using the service given in sample03 of the Apache Rampart distro to get the UserNameToken information at the service level. The service is given below:
public class EchoService { MessageContext msgCtx; public void setOperationContext(OperationContext opContext) throws AxisFault { this.msgCtx = opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE); } public String echo(String arg) { Vector results = null; if ((results = (Vector) msgCtx .getProperty(WSHandlerConstants.RECV_RESULTS)) == null) { System.out.println("No security results!!"); throw new RuntimeException("No security results!!"); } else { System.out.println("Number of results: " + results.size()); for (int i = 0; i < results.size(); i++) { WSHandlerResult rResult = (WSHandlerResult) results.get(i); Vector wsSecEngineResults = rResult.getResults(); for (int j = 0; j < wsSecEngineResults.size(); j++) { WSSecurityEngineResult wser = (WSSecurityEngineResult) wsSecEngineResults.get(j); if (wser.getAction() == WSConstants.UT && wser.getPrincipal() != null) { //Extract the principal WSUsernameTokenPrincipal principal = (WSUsernameTokenPrincipal)wser.getPrincipal(); //Get user/pass String user = principal.getName(); String passwd = principal.getPassword(); //Authenticate if("sanjay".equals(user) && "wspwd".equals(passwd)) { //Authentication successful System.out.println("User was: " + user); return arg; } else { throw new RuntimeException("Authentication Faliure!!"); } } } } return arg; } } }//end of EchoService And my client code is: public class Client { private static EndpointReference targetEPR = new EndpointReference( "http://localhost:8080/axis2/services/EchoService"); private static String confPath = "C:\\rampart\\echo"; public static void main(String[] args) throws Exception { ConfigurationContext ctx = ConfigurationContextFactory. createConfigurationContextFromFileSystem(confPath, confPath + "/conf/axis2.xml"); ServiceClient client = new ServiceClient(ctx,null); Options options = new Options(); options.setAction("urn:echo"); options.setTo(targetEPR); client.setOptions(options); OMElement response = client.sendReceive(getPayload("Hello world")); System.out.println(response); } private static OMElement getPayload(String value) { OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace ns = factory.createOMNamespace("http://extract.rampart.apache.org","ns1"); OMElement elem = factory.createOMElement("echo", ns); OMElement childElem = factory.createOMElement("param0", null); childElem.setText(value); elem.addChild(childElem); return elem; } }//end of Client However, when I run the client (which is also from the sample03), I get the following exceptions: Exception in thread "main" org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method echo at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java :486) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(Out InAxisOperation.java:343) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOper ation.java:389) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInA xisOperation.java:211) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163 ) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528 ) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508 ) at org.apache.rampart.extract.Client.main(Client.java:33) Is there a reason for these exceptions? I can't really figure out what's going wrong because the exceptions doesn't tell me much. In essence, it's basically a simple EchoService but with the addition of security processing code. Any ideas on how I should proceed? Cheers. Regards -------------- Sanjay Vivek Web Analyst Middleware Team ISS University of Newcastle Upon Tyne