I am trying to enable a simple app built using Struts2.0 framework for
OpenId. The application is deployed on Apache Tomcat 6.0. I get a
javax.servlet.ServletException at new ConsumerManager() call. Below is
the trace and other relevant information.
org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
javax.servlet.ServletException
at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:
515)
at
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:
419)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
845)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
at java.lang.Thread.run(Unknown Source)
The code is given below:
public class OpenIdLogin extends ActionSupport implements
ServletRequestAware,
ServletResponseAware {
private static final long serialVersionUID = -5998885243419513055L;
private final Log log = LogFactory.getLog(this.getClass());
ConsumerManager manager;
private ServletContext context;
public void init(){
try{
manager=new ConsumerManager();
manager.setAssociations(new InMemoryConsumerAssociationStore());
manager.setNonceVerifier(new InMemoryNonceVerifier(5000));
}
catch(ConsumerException e){
//throw new ServletException();
}
}
private HttpServletRequest request;
private HttpServletResponse response;
private String openid;
public String execute() throws Exception {
if(manager==null){
this.init();
}
.....................
...........}
Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"
http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="loginPage" extends="struts-default">
<action name="Login" class="loginPage.actions.Login">
<result>/notification_page.jsp</result>
<result name="error">/login.jsp</result>
</action>
<action name="OpenIdLogin" class="loginPage.actions.OpenIdLogin">
<result>/redirect.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
</struts>
The login.jsp is given below
<%@page language="java" import="java.util.*,javax.servlet.http.*" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h1>XYZ System</h1>
<s:form action="Login">
<% if (request.getParameter("userid") !=null)
out.println("<b>Login Failed</b><br><br>");
%>
<s:textfield label="User Id" name="userid"></s:textfield>
<s:password label="Password" name="password"></s:password>
<s:submit label="Login" name="Login"></s:submit>
</s:form>
<h2>
Login using your Open id
</h2>
<s:form action="OpenIdLogin">
<s:textfield label="Open Id" name="openid"></s:textfield>
<s:submit label="Login" name="OpenIdLogin"></s:submit>
</s:form>
</body>
</html>