can not get user and password from header
pkroman Jul 12, 2006 9:16 AMHallo. I have written a simple WebService called TrivialService
on JBoss 4.0.4:
package org.jboss.test.ws.samples.rpcstyle;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface TrivialService extends Remote
{
 String request(String string1, String string2) throws RemoteException;
}package org.jboss.test.ws.samples.rpcstyle;
import javax.xml.namespace.QName;
public class TrivialEndpoint implements TrivialService
 {
 public String request(String string1, String string2)
 {
 return "ok " + string1 + " " + string2;
 }
 }Then I have written a handler to have access to the user and password within the header:
package org.jboss.test.ws.samples.rpcstyle;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import javax.xml.namespace.QName;
import javax.xml.rpc.JAXRPCException;
import javax.xml.rpc.handler.*;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.*;
public class ServerSideHandler extends GenericHandler
{
 protected QName[] headers = new QName[]
 {
 };
 public QName[] getHeaders()
 {
 String NAMESPACE = "http://org.jboss.ws/samples/rpcstyle";
 QName SERVICE_NAME = new QName NAMESPACE,"TrivialService");
 QName[] qNames = {SERVICE_NAME};
 return qNames;
 }
 public boolean handleRequest(MessageContext msgContext)
 {
 System.out.print("handleRequeste");
 String user = (String) msgContext.getProperty("USERNAME_PROPERTY");
 String password = (String) msgContext.getProperty("PASSWORD_PROPERTY");
 System.out.print("user: " + user);
 System.out.print("password: " + password);
 return super.handleRequest(msgContext);
 }
 public boolean handleResponse(MessageContext msgContext)
 {
 System.out.print("handleResponse");
 return true;
 }
}And I put this to webservices.xml (in port-component tag):
<handler> <handler-name>ServerSideHandler</handler-name> <handler-class>org.jboss.test.ws.samples.rpcstyle.ServerSideHandler</handler-class> </handler>
This is my service client for invoking the service.
package org.jboss.test.ws.samples.client;
import java.io.IOException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Stub;
import com.sun.org.apache.bcel.internal.Constants;
public class Client
{
 public static void main(String[] args) throws Exception
 {
String urlstr = "http://pc0104-129:8080/TrivialService?wsdl";
 URL url = new URL(urlstr);
 String ns = "http://org.jboss.ws/samples/rpcstyle";
 QName qname = new QName(ns, "TrivialService");
QName port = new QName(ns, "TrivialServicePort");
 QName operation = new QName(ns, "request");
 ServiceFactory factory = ServiceFactory.newInstance();
 Service service = factory.createService(url, qname);
 Call call = service.createCall(port, operation);
 try
 {
 call.setProperty(Call.USERNAME_PROPERTY,"user");
 call.setProperty(Call.PASSWORD_PROPERTY,"password");
 String result = (String) call.invoke(new Object[] {"String1","String2"});
 System.out.println("output:" + result);
 }
 catch( IOException ioe )
 {
 ioe.printStackTrace();
 System.out.println(ioe.getMessage());
 System.out.println(ioe.getCause().getMessage());
 System.out.println(ioe.getCause().getLocalizedMessage());
 }
 }
}After I have invoked the service the handler printed null for the user and password. Could somebody tell me what is wrong?
Greetings,
patrick