Listing 2 Provider.java
package org.apache.soap.util;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
import org.apache.soap.server.*;
public interface Provider {
public void locate(DeploymentDescriptor dd,
Envelope env,
Call call,
String methodName,
String targetObjectURI,
SOAPContext reqContext)
throws SOAPException;
public void invoke(SOAPContext req, SOAPContext res)
throws SOAPException;
}
Listing 3 AuthProviderDB.java
public boolean isAuthenticated(String username, String
password) {
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT password FROM " +
"principal WHERE username = '" + username + "'");
if (rs.next()) {
if(rs.getString("password").equals(password)) {
return true;
}
}
return false;
}
catch (SQLException e) {
return false;
}
}
public boolean isAuthorized(String username, String uri) {
try {
PreparedStatement pstmt =
con.prepareStatement("SELECT p.username FROM " +
"principal_webservice_map pwm, " +
"principal p, webservice ws " +
"WHERE pwm.p_id = p.id " +
"AND pwm.ws_id = ws.id " +
"AND p.username = ? AND ws.uri = ?");
pstmt.setString(1,username);
pstmt.setString(2,uri);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
if(rs.getString("username").equals(username)) {
return true;
}
}
return false;
}
catch (SQLException e) {
System.err.println("SQLException: " + e.getMessage());
return false;
}
}
Listing 4 HelloWorld.java
package com.empsoft.soap.services;
public class HelloWorld {
public String sayHello() {
return("Hello, world!");
}
}
Listing 5 DeploymentDescriptor.xml
HelloWorld">
methods="sayHello">
Listing 6 AuthProviderClient.java
String username = "markr";
String password = "Jsdh8qSD";
URL url = new URL(args[0]); // SOAP listener's URL from the
command line
Call call = new Call();
call.setTargetObjectURI("urn:test-authprovider");
call.setMethodName("sayHello");
SOAPHTTPConnection hc = new SOAPHTTPConnection();
hc.setUserName(username);
hc.setPassword(password);
call.setSOAPTransport(hc);
Vector params = new Vector();
call.setParams(params);
Response resp = call.invoke(url, "");
if (resp.generatedFault()) {
Fault fault = resp.getFault();
System.out.println ("Ouch, the call failed: ");
System.out.println ("Fault Code = " +
fault.getFaultCode());
System.out.println ("Fault String = " +
fault.getFaultString());
} else {
Parameter result = resp.getReturnValue();
System.out.println(result.getValue());
}