Ok, I’m trying to run a simple servlet (actually I’ve tried several) on Domino and I keep getting a HTTP JVM: java.lang.ClassCastException: java.lang.String: java.lang.String error message on the console.
This happens at the same point each time. Here’s the servlet code:
import java.io.*;
import java.util.*;
import java.security.cert.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PrintCert extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
out.println(“reading in cert”);
X509Certificate certs = (X509Certificate)
req.getAttribute("javax.servlet.request.X509Certificate");
out.println("read in cert");
if (certs != null) {
for (int i = 0; i < certs.length; i++) {
String istr=Integer.toString(i);
out.println("Client Certificate [" + istr+ "] = "
+ certs[i].toString());
}
}
else {
if ("https".equals(req.getScheme())) {
out.println("This was an HTTPS request, " +
"but no client certificate is available");
}
else {
out.println("This was not an HTTPS request, " +
"so no client certificate is available");
}
}
}
}
The line of code that causes this is:
X509Certificate certs = (X509Certificate)
I have an old SnoopServlet from Sun that has a similar line that gives me the same error.
Yes, I’m authenticating to the Domino server using an X.509 Certificate and I’ve verified that by submitting the current cert using the certpub database.