Erro ao configurar web.xml e struts-config.xml

3 respostas
inijava

Segue mensagem de Erro :?

HTTP Status 404 - Servlet action is not available

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.
Apache Tomcat/5.0.30


Pessoal estou iniciando estudo de struts, estou tentando configurar o struts 1 e estou com o erro acima:
Estou estudando pela apostila Fj21-Caelum.
Estou usando Eclipse, Jboss.

Segue o código:

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app>

&lt;servlet&gt;
	&lt;servlet-name&gt;action&lt;/servlet-name&gt;
	&lt;servlet-class&gt;org.apache.struts.action.ActionServlet
	&lt;/servlet-class&gt;
	&lt;init-param&gt;
		&lt;param-name&gt;config&lt;/param-name&gt;
		&lt;param-value&gt;/WEB-INF/struts-config.xml
		&lt;/param-value&gt;
	&lt;/init-param&gt;
	&lt;init-param&gt;
		&lt;param-name&gt;debug&lt;/param-name&gt;
		&lt;param-value&gt;2&lt;/param-value&gt;
	&lt;/init-param&gt;
	&lt;init-param&gt;
		&lt;param-name&gt;detail&lt;/param-name&gt;
		&lt;param-value&gt;2&lt;/param-value&gt;
	&lt;/init-param&gt;
	&lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;action&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

</web-app>

struts-config.xml

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

<struts-config>

&lt;action-mappings&gt;

    &lt;action path="/teste" name="teste" type="br.com.caelum.struts.action.TesteSimplesAction"&gt;
        &lt;forward name="ok" path="/exemplo.jsp"/&gt;
    &lt;/action&gt;
    
&lt;/action-mappings&gt;

</struts-config>

class TesteSimplesAction

package br.com.caelum.struts.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;

public class TesteSimplesAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response) throws Exception{
	System.out.println("Executando o código da lógica de negócios...");
	return mapping.findForward("ok");
}

}

O que estou fazendo de errado?

3 Respostas

inijava

Me ajuda pessoal!!!

Hildebrando_Pedroni

Cara, vc tem certeza que esta usando o Jboss??

Como que vc está fazendo o deploy da aplicação?

inijava

Estou usando sim o jboss, o deploy é via Ant conforme abaixo

build.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<property name="libs.dir" value="${basedir}/lib" />
<property name="src.java" value="${basedir}" />
<property name="webapp.name" value="testestruts.war" />
<property name="src.webapp" value="${basedir}/webapp" />
<loadproperties srcfile="build.properties" />

<!--  Help deste build   -->
<target name="usage">
	<echo message="Available targets:" />
	<echo message="" />
	<echo message="clean 		  ok Limpa os diretorios do projeto E do servidor." />
	<echo message="compile 		  Compila as classes do projeto." />
	<echo message="warExpanded 	  Monta o war do projeto (no diretorio temporario)" />
	<echo message="deployExpanded Faz o (hot)deploy do WAR expandido no servidor." />
	<echo message="updateJsp 	  Faz o deploy apenas dos JSPs no servidor." />
</target>
<!--  Fim do HELP   -->

<!--  Limpa os diretorios do projeto. -->
<target name="clean">
	<delete dir="${jboss.home}/server/default/deploy/${webapp.name}"
		failonerror="false" />
	<delete dir="${basedir}/build.output/classes" failonerror="false" />
	<delete dir="${basedir}/build.output/war" failonerror="false" />
</target>

<!--  Compila as classes do projeto.   -->

<path id="compile.classpath" >
	<fileset dir="${libs.dir}" includes="*.jar,*.zip" />
	<fileset dir="${jboss.home}/server/default/lib" includes="servlet.jar" />
</path>
<property name="compile.classpath" refid="compile.classpath" />

<target name="compile" depends="clean">
	<mkdir dir="${basedir}/build.output/classes" />
	<javac srcdir="${src.java}" 
			destdir="${basedir}/build.output/classes"
			optimize="on" 
			debug="true" 
			classpath="${compile.classpath}" 
			encoding="ISO-8859-1"
			fork="yes" 
			memoryMaximumSize="256m" />
</target>

<!--  DEPLOY   -->
<target name="warExpanded" depends="compile">
	<mkdir dir="${basedir}/build.output/war" />
	<mkdir dir="${basedir}/build.output/war/WEB-INF" />
	<mkdir dir="${basedir}/build.output/war/WEB-INF/classes" />
	<mkdir dir="${basedir}/build.output/war/WEB-INF/lib" />

	<!--  Copia todos os arquivos de /src/webapp  -->
	<copy todir="${basedir}/build.output/war">
		<fileset dir="${src.webapp}" />
	</copy>
	<!--  Copia as dependencias   -->
	<copy todir="${basedir}/build.output/war/WEB-INF/lib">
		<fileset dir="${libs.dir}" excludes="j2ee.jar" />
	</copy>

	<!--  Copia os .class para o WEB-INF/classes  -->
	<copy todir="${basedir}/build.output/war/WEB-INF/classes">
		<fileset dir="${basedir}/build.output/classes" />
		<fileset dir="${basedir}/webapp/resources" />
	</copy>
</target>

<!--  Deploy on jboss.   -->
<target name="deployExpanded" depends="warExpanded"
	description="Deploy this project on Jboss.">
	<echo message="${jboss.home}" />
	<copy todir="${jboss.home}/server/default/deploy/${webapp.name}">
		<fileset dir="${basedir}/build.output/war" />
	</copy>
</target>

<!--  Update JSP files.  -->
<target name="updateJsp" description="Update only JSP files in this base">
	<copy todir="${jboss.home}/server/default/deploy/${webapp.name}">
		<fileset dir="${src.webapp}" includes="**/*.jsp" />
		<fileset dir="${src.webapp}" includes="**/*.html" />
	</copy>
</target>

<!--  Fim DEPLOY   -->

build.properties
jboss.home = C:/jboss-3.2.7

Criado 21 de abril de 2010
Ultima resposta 21 de abr. de 2010
Respostas 3
Participantes 2