wood burning stoves 2.0*
The moose likes Web Services and the fly likes WSHandler: cannot create instance of password callback Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Web Services
Bookmark "WSHandler: cannot create instance of password callback" Watch "WSHandler: cannot create instance of password callback" New topic
Author

WSHandler: cannot create instance of password callback

prashant potluri
Greenhorn

Joined: Aug 08, 2007
Posts: 2
Hi,
I am a newbie to axis2 and rampart. I am using tomcat and axis2-1.2. I am trying to secure a web service using username token

My service is as follows:

public class MyHello {
public String sayHello(String s){
return "HELLO"+" "+s;
} }

CallbackHandler is as follows :

public class PwdCallBackHandler implements CallbackHandler{
public void handle(Callback[] callbacks) throws IOException,UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
String id = pwcb.getIdentifer();
if("myname".equals(id)) {
pwcb.setPassword("password");
} } }

service.xml looks as follows:

<service name="MyHello" >
<description>
Sample Web Service for Username Token
</description>
<operation name="sayHello">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<parameter name="ServiceClass" locked="false">testpack.MyHello</parameter>
<module ref="rampart" />
<parameter name="InflowSecurity">
<action>
<items>UsernameToken Timestamp</items>
<passwordCallbackClass>testpack.PwdCallBackHandler</passwordCallbackClass>
<passwordType>passwordDigest</passwordType>
</action>
</parameter>
</service>

I also created client.axis2.xml similar to given in samples where i changed the existing values to:

<module ref="rampart" />
<parameter name="OutflowSecurity">
<action>
<items>UsernameToken Timestamp</items>
<user>myname</user>
<passwordCallbackClass>testpack.PwdCallBackHandler</passwordCallbackClass>
</action>
</parameter>

I created stubs for my service. my Client is as follows:

public class MyHelloClient{
public static void main(String[] args) {
try{
MyHelloMyHelloSOAP11PortStub stub = new MyHelloMyHelloSOAP11PortStub("http://localhost:8080/axis2/services/MyHello");
MyHelloMyHelloSOAP11PortStub.SayHello sayHello = new MyHelloMyHelloSOAP11PortStub.SayHello();
sayHello.setS("bob");
MyHelloMyHelloSOAP11PortStub.SayHelloResponse resp = stub.sayHello(sayHello);
System.out.println("Response from Web Service -->"+resp.get_return());
}catch(Exception ex){
ex.printStackTrace();
}}




I get the following exception when i run the client :

org.apache.axis2.AxisFault: WSHandler: cannot create instance of password callback: testpack.PwdCallBackHandler; nested exception is:

java.lang.ClassCastException: testpack.PwdCallBackHandler

at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:434)

at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:373)

at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294)

at testpack.MyHelloMyHelloSOAP11PortStub.sayHello(MyHelloMyHelloSOAP11PortStub.java:151)

at testpack.MyHelloClient.main(MyHelloClient.java:28)
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: WSHandler: cannot create instance of password callback
 
Similar Threads
SOAP Header missing using Rampart w/ Axis2 Generated Stub
Axis2, client handler not getting called
WSE security authentication problem.
axi2/java and axis2/c adb authentication
digest authentication on client side implementation.