4

While deplyoing Struts 1.3 Login application on localhost 8080 (Apache Tomcat 6.0.16 Server). I am getting following error.

HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /Login.jsp at line 13

10: </head>
11: <body>
12: 
13:     <html:form action="/Login.do">
14:         Username : <html:text name="LoginForm" property="userName"/><br/>
15:         Password : <html:password name="LoginForm" property="password"/><br/>
16:         <html:submit value="Login"/>

Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.NullPointerException: Module 'null' not found.
    org.apache.struts.taglib.TagUtils.getModuleConfig(TagUtils.java:755)
    org.apache.struts.taglib.TagUtils.getModuleConfig(TagUtils.java:735)
    org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:818)
    org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:488)
    org.apache.jsp.Login_jsp._jspx_meth_html_005fform_005f0(Login_jsp.java:105)
    org.apache.jsp.Login_jsp._jspService(Login_jsp.java:78)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.


Apache Tomcat/6.0.16

Login.jsp

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>     
      <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Form</title>
</head>

<body>
    <html:form action="/Login">
        Username : <html:text name="LoginForm" property="userName"/><br>
        Password : <html:password name="LoginForm" property="password"/><br>
        <html:submit value="Login"/>
    </html:form>
</body>
</html>

Struts-Config.xml

<?xml version="1.0" encoding="UTF-8"?>
<struts-config>
    <!-- ========== Form Bean Definitions ================================== -->
    <form-beans>
        <form-bean name="loginForm" type="org.suraj.form.LoginForm"/>
    </form-beans>
    <!-- ========== Action Mapping Definitions ============================= -->
    <action-mappings>
            <action name="loginForm" path="/Login" type="org.suraj.action.LoginAction" scope="request" input="/Login.jsp" validate="true">
                <forward name="failure" path="/Failure.jsp" redirect="true"/>
                <forward name="success" path="/Success.jsp" redirect="true"/>
            </action>
    </action-mappings>

</struts-config>

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <display-name>Login</display-name>
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>
            org.apache.struts.action.ActionServlet
        </servlet-class>

        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>

        <load-on-startup>2</load-on-startup>        
    </servlet>

    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>Login.jsp</welcome-file>
    </welcome-file-list>

</web-app>

LoginForm.java

package org.suraj.form;  

import org.apache.struts.action.ActionForm;

public class LoginForm extends ActionForm {


    private static final long serialVersionUID = 1029546343415365160L;
    private String userName;
    private String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


}

LoginAction.java

package org.suraj.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.suraj.form.LoginForm;

public class LoginAction extends Action{

    private static final long serialVersionUID = -8847579600418060362L;

    private final static String SUCCESS = "success";

    private final static String FAILURE = "failure";

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
    throws Exception {

        LoginForm loginForm = (LoginForm) form;

        if (loginForm.getUserName().equals(loginForm.getPassword())) {

            return mapping.findForward(SUCCESS);

        } else {

            return mapping.findForward(FAILURE);

        }
    }
}
Gianmarco
  • 2,536
  • 25
  • 57
suraj_fale
  • 978
  • 2
  • 21
  • 53

7 Answers7

5

It could be for multiple reasons. Check here

Extract from the link,

This error occurs when you try to display a JSP before the Struts ActionServlet has been initialized and is active. The causes for this error are usually either:

  • You failed to specify 2 for the Struts ActionServlet in your web.xml file or
  • You did specify the above, but the Struts ActionServlet didn't initialize properly because of an error. Check the log file entries
    for the time period when the Server first starts up to see if it
    initialized properly or
  • You accessed a JSP page directly without going through an action
Shashank Kadne
  • 7,993
  • 6
  • 41
  • 54
  • SEVERE: Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to an incorrect or missing library dependency. java.lang.NoClassDefFoundError: org/apache/commons/chain/config/ConfigParser – suraj_fale Mar 21 '12 at 05:56
  • 1
    It seems you are missing a jar commons-chain-1.1.jar...add this jar to your lib – Shashank Kadne Mar 21 '12 at 06:22
  • Thnaks... Its because of mix jar files. – suraj_fale Mar 21 '12 at 08:16
  • 1
    This answer, by itself, is not particularly useful as it just points people to another link. Can you summarize the main points or at least provide a simple exposition about why this link is useful? – templatetypedef May 20 '14 at 22:23
  • @templatetypedef : Added an extract from the link. – Shashank Kadne May 21 '14 at 08:10
2

My issue appeared on the struts application having in pom.xml maven-compiler-plugin with setting source/target to 1.7 -> reset it to 1.5/1.6 it fixed my issue (building was done with Java 7). This application was deployed on Tomcat 7 but using java 6. Maybe it could help somebody...

Nolf
  • 21
  • 1
2

Give load on startup as 1 to ActionServlet in web.xml. this myt fix problem.

1

Verify if the TomCat Server must be run under JDK 1.7. Don't forget restart the server after the change.

deldev
  • 1,296
  • 18
  • 27
0

This may be due to internet problem or systemconfig. problem

Solution:

1) Download http://struts.apache.org/dtds/struts-config_1_3.dtd dtd file and copy it into web-inf folder.

2) Change the struts-config file Doctype tag to !DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.3//EN" "**struts-config_1_3.dtd**">

Mab879
  • 608
  • 16
  • 33
RRR
  • 3,509
  • 4
  • 29
  • 38
0

I had the same problem but the solution that I found was different. After I checked the catalina.out file I realized that I had a problem with version of a class extended from ValidatorForm. And finally I solved it updating the jdk version. It happened because I was using a different version for develop than the installed version in tomcat.

jpenaab
  • 19
  • 1
0

Other than seeing this error on the login screen, I could see the error message which tells that my struts-config.xml file is not present under WEB-INF folder.

I had faced the same issue, but in my case I had a maven project

and I had my struts-config.xml under src/main/resources/struts-config.xml

And it was not placed under src/main/webapp/WEB-INF folder.

As soon as I placed my struts-config.xml under src/main/webapp/WEB-INF folder, my error was gone and I was able to use the application.

Yogesh Gandhi
  • 111
  • 1
  • 7