[RESOLVIDO]Ajuda em Erro struts 1!

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

[code]
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.[/code]

desde já agradeço !!!

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.

Ai segue a minha Action.

[code]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"); 
}

}[/code]

minha classe bean:

[code]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;
}

}
[/code]

FormAction

[code]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;
}

}
[/code]

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

arquivo.jsp

[code]<%@ 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” %>

html:html

Ping

Ping


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

	</html:form>
<c:import url="Boton.jsp" />
[/code]

e meu struts-config está assim:

[code]

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

[/code]

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

Desde já grato!!!

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

Vlw msm!!!

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

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

Você pode postar seu struts-config completo?

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

<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>

[/code]

meu strut-config.xml está assim…

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

Dá uma olhada.

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

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

Dá uma olhada.[/quote]

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

[code]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;
}

}
[/code]

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

private static final long serialVersionUID = 1L;  

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

Segue ai !!!

[code]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;
}

}
[/code]

Good news !!!

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

alterei minha Action:

[code]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"); 
}

}
[/code]

a minha form:

[code]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;
}

}
[/code]

e mudei minha pagina para :

[code]<%@ 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” %>
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix=“html” %>

html:html

Insert title here
<html:form action="/pingar" focus="ip">
Entre com o endereço ip:

	<html:text  property="ip" />
	<html:submit>Enviar dados</html:submit>

<c:import url="Boton.jsp" />
[/code]