[RESOLVIDO]Ajuda em Erro struts 1!

15 respostas
S

Boa noite Guj's!!
Poderiam me dizer por qual motivo ocorre esse erro na minha aplicação?
segue o log abaixo

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: java.lang.NullPointerException: Module 'null' not found.
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:548)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:471)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

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.PingJsp_jsp._jspx_meth_html_005fform_005f0(PingJsp_jsp.java:203)
	org.apache.jsp.PingJsp_jsp._jspx_meth_html_005fhtml_005f0(PingJsp_jsp.java:139)
	org.apache.jsp.PingJsp_jsp._jspService(PingJsp_jsp.java:97)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

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

desde já agradeço !!!

15 Respostas

Marcio_Nogueira

Em algum ponto está sendo passado o valor null, esta é a causa do erro.
Debugue sua aplicação e veja onde o valor null é setado.

S
Ai segue a minha Action.
package actions;


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 beans.EnderecoBeans;
import forms.PingForm;




public class PingAction extends Action{
	
    public ActionForward execute(ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    	
    	
    	PingForm fm=(PingForm)form;
    	EnderecoBeans eb = new EnderecoBeans(fm.getIp());
    	String respIp = "";
    	respIp =eb.pinga(eb.getIp());
    	System.out.println(respIp);
    	
    	
        return mapping.findForward("ok"); 
    }
}

minha classe bean:

package beans;

import java.util.Scanner;

public class EnderecoBeans {

	String ip;

	public EnderecoBeans(String ip) {
		super();
		this.ip = ip;
	}

	public EnderecoBeans() {

	}

	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

	public String pinga(String ip) {
		String resposta = "";
		int fim = 0;
		boolean kbo = false;
		String comando = new String("ping -n 1 -w 600 " + ip);
		try {
			Scanner s = new Scanner(Runtime.getRuntime()
					.exec("cmd /c " + comando).getInputStream());
			while (s.hasNextLine()) {
				resposta = s.nextLine() + "\n";
				fim = resposta.length() - 8;
				for (int j = 0; j <= fim; j++) {
					if (resposta.substring(j, 8 + j).equals("Resposta")) {
						kbo = true;
						break;
					} else {
						kbo = false;
					}
				}
				if (kbo == true) {
					resposta = "Ping funciona";
					break;
				} else
					resposta = "Ping não funcional HOST DOWN";
			}
		} catch (Exception e) {
		}
		return resposta;
	}

	public String telnet(String ip) {
		String resposta = "";
		int fim = 0;
		boolean kbo = false;
		String comando = new String("netstat -an |find /i" + "\"listening\"");
		try {
			Scanner s = new Scanner(Runtime.getRuntime()
					.exec("cmd /c " + comando).getInputStream());
			while (s.hasNextLine()) {
				resposta += s.nextLine() + "\n";
				fim = resposta.length() - 8;
				for (int j = 0; j <= fim; j++) {
					if (resposta.substring(j).equals("TCP")) {
						kbo = true;
						break;
					} else {
						kbo = false;
					}
				}
				if (kbo == true) {
					break;
				}
			}
		} catch (Exception e) {
		}
		return resposta;
	}

}

FormAction

package forms;


import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.*;


public class PingForm extends ActionForm{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String ip;
	
	 public void reset(ActionMapping mapping, HttpServletRequest request) {
	        ip = "";
	        
	    }
	
	 /*public ActionErrors validate(
		        ActionMapping mapping,
		        HttpServletRequest request) {

		        ActionErrors errors = new ActionErrors();
		        if ((ip == null) || (ip.length() < 1)) {
		            errors.add("ip", 
		                new ActionMessage("error.ip.required"));
		        }
		        return errors;
	    }*/

	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

}

e para em uma pagina JSP o usuário passar o ip .

arquivo.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ping</title>
<link rel=stylesheet type="text/css" href="main.css">
</head>
<body>
<c:import url="Top.jsp" />

<div><h1>Ping</h1>
<br>
		<p class="main">Ping é um utilitário que usa o protocolo ICMP para testar a conectividade entre equipamentos. Seu funcionamento consiste no envio de pacotes para o equipamento de destino e na "escuta" das respostas</p></div>
<div>		
<html:form>
<table><tr>
<td><bean:message key="Entre Com o endereço IP :"/></td>
<td><html:text property="ip" name="ip"/></td>
</tr>
</table>
<html:submit value="verificar"/>

		</html:form>
</div>


	


	<c:import url="Boton.jsp" />
</body>
</html:html>

e meu struts-config está assim:

<!-- Form -->

<action path="/Top" forward="/Top.jsp"/>

	<form-beans>
		<form-bean name="PingForm"
			type="SistemaDeMonitoramento.src.forms.PingForm" />
	</form-beans>
	
<!-- Action -->
<struts-config>
	<action-mappings>
		<action path="/PingJsp" 
		type="SistemaDeMonitoramento.src.actions.PingAction">
		<forward name="ok" path="/pingresp.jsp" />
		</action>
	</action-mappings>

</struts-config>

Poderia me apontar aonde estou errando ,ou o que está faltando???

Desde já grato!!!

Marcio_Nogueira

Vou pegar o código que você postou e vou testar na minha máquina, depois te retorno.

S

Vlw msm!!!

Marcio_Nogueira

Só uma pergunta: qual a versão do Struts 1 que você esta utilizando?
Baixei a versão 1.3.10.

S

Marcio_Nogueira e exatamente esse struts 1 mesmo a versão 1.3.10.

Marcio_Nogueira

Você pode postar seu struts-config completo?

S
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<!-- Form -->

<struts-config>

	<form-beans>
		<form-bean name="pingForm" type="forms.PingForm" />
	</form-beans>


	<action-mappings>
		<action input="/ping" name="pingForm" path="/PingAction" scope="request"
			type="actions.PingAction">
			<forward name="ok" path="/PingJsp.jsp" />
			</action>
	</action-mappings>



</struts-config>

meu strut-config.xml está assim...

Marcio_Nogueira

A seguinte conversão é inválida:
PingForm fm=(PingForm)form; (acusa erro ao converter um ActiomForma para um PingForm.

Dá uma olhada.

Marcio_Nogueira

Você pode postar o código de seus beans para que eu possa testar na minha máquina?

S
Marcio_Nogueira:
A seguinte conversão é inválida: PingForm fm=(PingForm)form; (acusa erro ao converter um ActiomForma para um PingForm.

Dá uma olhada.

Sim e verdade creio que seja por causa da falta do construtor eu refiz o form

package forms;


import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.*;


public class PingForm extends ActionForm{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String ip;
	
	
	
	
	 public PingForm(String ip) {
		super();
		this.ip = ip;
	}

	 
	 
	public PingForm() {
		super();
		// TODO Auto-generated constructor stub
	}

	public void reset(ActionMapping mapping, HttpServletRequest request) {
	        ip = "";
	        
	    }
	
	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

}
Marcio_Nogueira

A seguinte linha não é necessária, pois você não está implementando a interface Serialazible:

private static final long serialVersionUID = 1L;
Marcio_Nogueira

Pode postar o código de seu EnderecoBean? Quero verificar a classe.

S
Segue ai !!!
package beans;

import java.util.Scanner;

public class EnderecoBeans {

	String ip;

	public EnderecoBeans(String ip) {
		super();
		this.ip = ip;
	}

	public EnderecoBeans() {

	}

	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

	public String pinga(String ip) {
		String resposta = "";
		int fim = 0;
		boolean kbo = false;
		String comando = new String("ping -n 1 -w 600 " + ip);
		try {
			Scanner s = new Scanner(Runtime.getRuntime()
					.exec("cmd /c " + comando).getInputStream());
			while (s.hasNextLine()) {
				resposta = s.nextLine() + "\n";
				fim = resposta.length() - 8;
				for (int j = 0; j <= fim; j++) {
					if (resposta.substring(j, 8 + j).equals("Resposta")) {
						kbo = true;
						break;
					} else {
						kbo = false;
					}
				}
				if (kbo == true) {
					resposta = "Ping funciona";
					break;
				} else
					resposta = "Ping não funcional HOST DOWN";
			}
		} catch (Exception e) {
		}
		return resposta;
	}

	public String telnet(String ip) {
		String resposta = "";
		int fim = 0;
		boolean kbo = false;
		String comando = new String("netstat -an |find /i" + "\"listening\"");
		try {
			Scanner s = new Scanner(Runtime.getRuntime()
					.exec("cmd /c " + comando).getInputStream());
			while (s.hasNextLine()) {
				resposta += s.nextLine() + "\n";
				fim = resposta.length() - 8;
				for (int j = 0; j <= fim; j++) {
					if (resposta.substring(j).equals("TCP")) {
						kbo = true;
						break;
					} else {
						kbo = false;
					}
				}
				if (kbo == true) {
					break;
				}
			}
		} catch (Exception e) {
		}
		return resposta;
	}

}
S

Good news !!!!!!!!

Consegui que essa budega funcione !!! mais ainda falta a criar a saída a resposta do ping!!!

alterei minha Action:

package actions;





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 beans.EnderecoBeans;
import forms.PingForm;




public class PingAction extends Action{
	
    public ActionForward execute(ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    	
    	System.out.println("Tentando criar um ping...");
    	
    	PingForm form1 =(PingForm)form;
    	
    	EnderecoBeans obj= form1.getIp();
    	
    	obj.pinga("obj");
    	
    	
    	
        return mapping.findForward("ok"); 
    }
}

a minha form:

package forms;

import org.apache.struts.action.*;

import beans.EnderecoBeans;

public class PingForm extends ActionForm {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private EnderecoBeans ip = new EnderecoBeans();

	public EnderecoBeans getIp() {
		return ip;
	}

	public void setIp(EnderecoBeans ip) {
		this.ip = ip;
	}
	

}

e mudei minha pagina para :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>

<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<c:import url="Top.jsp" />
	
	<html:form action="/pingar" focus="ip">
	Entre com o endereço ip:
	
		<html:text  property="ip" />
		<html:submit>Enviar dados</html:submit>
<br/>
</html:form>




	<c:import url="Boton.jsp" />
</body>
</html:html>
Criado 21 de setembro de 2011
Ultima resposta 25 de set. de 2011
Respostas 15
Participantes 2