Servlet não encontrado

10 respostas
F

Pessoal,
estou com problemas na comunicação entre applet e servlet.

abaixo, seguem os métodos getConnection(),sendObject() e receiveObject() do applet:


private URLConnection getConnection() throws IOException
  {
    String conexaoServlet = "http://localhost:8080/CilindroSecador/Acesso";
    URL u = new URL(conexaoServlet);
    URLConnection con = u.openConnection();
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setUseCaches(false);
    con.setRequestProperty("Content-type","application/octet-stream");
    con.setAllowUserInteraction(false);
    return con;

  }

private void sendObject (URLConnection con, Object obj) throws IOException
  {
    ObjectOutputStream out = new ObjectOutputStream(con.getOutputStream());
    if (obj != null){
      out.writeObject(obj);
    }
      out.close();
    }

private Object receiveObject(URLConnection con) throws Exception
 {
   ObjectInputStream in = new ObjectInputStream (con.getInputStream());
   Object obj = in.readObject();
   return obj;
 }

trecho do codigo do applet onde os métodos são invocados:

void loginBotao_actionPerformed(ActionEvent e) {
      try {
          URLConnection con = getConnection();
          sendObject(con, Conect);
          String c = (String)receiveObject(con);
          }
       }
       catch ( Exception ex ) {
       System.err.println( "Não Foi Possível a Conexão" + ex );
         }
}

O servlet invocado é Acesso.class

Codigo:

public class Acesso extends HttpServlet {
  private Connection connection;

  public String Conecta(String c) {
  String conecta = "";
    try{
       Class.forName("com.mysql.jdbc.Driver").newInstance();
       connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/cilindrosecador?user=angelo");
       c = "true";

     }
    catch ( SQLException sqlex ) {
       System.err.println( "Não Foi Possível a Conexão Servlet" );
       sqlex.printStackTrace();
          }
       catch (ClassNotFoundException ex) {
          //loginDisplay.setText("ClassNotFoundException");
       }
       catch (IllegalAccessException ex1) {
         // loginDisplay.setText("IllegalAccessException");
       }
       catch (InstantiationException ex1) {
         // loginDisplay.setText("InstantiationException");
       }

    return (c);
  }


  private Object receiveObject(HttpServletRequest req) throws Exception
  {
    ObjectInputStream in =new ObjectInputStream(req.getInputStream());
    Object obj = in.readObject();
    in.close();
    return obj;
 }

private void sendObject(HttpServletResponse resp, Object obj) throws
      IOException {
   ObjectOutputStream out = new ObjectOutputStream(resp.getOutputStream());
   out.writeObject(obj);
   out.close();
 }

  public void doPost(HttpServletRequest req, HttpServletResponse resp)
  {
  try{
    Object obj = receiveObject(req);
    String c = (String)obj;
    Conecta(c);
    sendObject(resp, c);
  }
  catch(Exception e){
   System.err.println( e );
  }
  }

}

Configurei o Tomcat, JAVA_HOME, CATALINA_HOME etc… Testei o mesmo e está funcionando. Porém, quando rodo o applet, e clico no botão que dispara requisições ao servlet, ele para no método receiveObject(), do applet:

ObjectInputStream in = new ObjectInputStream (con.getInputStream());

e mostra a seguinte mensagem:

java.io.FilenotFoundException http://localhost:8080/CilindroSecador/Acesso

Criei a minha aplicação em C:/TC2/CilindroSecador

Configurei o Tomcat para trabalhar neste diretório, porém eu acredito que não está certo e que o erro vem dele.

alguém saberia me explicar o motivo do erro?

Obrigado

10 Respostas

J

vc configurou teu web.xml dentro da pasta da tua aplicaçao para reconhecer esse servlet??

cya!

F

codigo da web.xml:

<servlet>
	<servlet-name>acesso</servlet-name>
	<servlet-class>Acesso</servlet-class>
	<init-param>
		<param-name>debug</param-name>
		<param-value>0</param-value>
	</init-param>
	<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>Acesso</servlet-name>
	<url-pattern>Acesso</url-pattern>
</servlet-mapping>
F

Mais um detalhe: o servlet Acesso.class possui um package: cilindrosecador. Devo referenciá-lo também quando endereçar na URL ou mapear no web.xml??

J

achamos seu problema entao!

esse servlet está dentro do package, que deve ser referenciado… ou seja, vc tem que sempre lembrar que o diretório raiz para esses casos vai ser o classes, entao o que vier depois deve ser declarado…
no seu caso ficaria assim:

<servlet-class>cilindrosecador.Acesso</servlet-class>

bom, creio que seja só isso!

qqr coisa poste ai!

cya!

F

Infelizmente, ainda não funcionou.

como ficou o código do web.xml:

<servlet>

<servlet-name>cilindrosecador.Acesso</servlet-name>

<servlet-class>cilindrosecador.Acesso</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>0</param-value>

</init-param>

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

</servlet>
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;cilindrosecador.Acesso&lt;/servlet-name&gt;
	&lt;url-pattern&gt;/cilindrosecador.Acesso&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

este arquivo fica no diretório C:\TC2\CilindroSecador\WEB-INF

Conforme visto num tutorial sobre instalação e configuração do Tomcat 5, editei o arquivo dev.xml em C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.0\conf\Catalina\localhost\dev.xml

Código do dev.xml:

<?xml version=“1.0” encoding=“iso-8859-1”?>
<Context path="/CilindroSecador" docBase=“C:\TC2\CilindroSecador”
debug=“0” reloadable=“true” crossContext=“true”>
<Logger className=“org.apache.catalina.logger.FileLogger”
prefix=“localhost_dev_log.” suffix=".txt" timestamp=“true” />
</Context>

Bom, continuo recebendo a mensagem de erro:

java.io.FileNotFoundException: http://localhost:8080/CilindroSecador/Acesso

Tentei acrescentar o package na URL também, sem efeito:
http://localhost:8080/CilindroSecador/cilindrosecador.Acesso

J

ahh no mapping nao coloque…

tira o do mapping!

right?! eh pra funcionar!

cya!

M

ae Angelo (foxmulder), tu pode me achar no EAD da Unisc cara, vou começar a trabalhar la essa semana agora, ou pode continuar tirando tuas dúvidas aqui pelo fórum mesmo, tenho certeza q não vai levar mais de 24h pra alguém te responder aqui… :smiley:

[size=“11”]ps: o foxmulder me pediu uma ajuda por pvt, parece q é da minha cidade hohoho[/size]

J

assim que teria que ficar o teu mapping!

&lt;servlet-mapping&gt; 
   &lt;servlet-name&gt;cilindrosecador.Acesso&lt;/servlet-name&gt; 
   &lt;url-pattern&gt;/cilindrosecador.Acesso&lt;/url-pattern&gt; 
&lt;/servlet-mapping&gt;

pow matheus… entao encontra o cara ai pra sair beber umas hauiehiuahe =)

ahh tu vai trampa entao hein mazzaaaateee =) tava chorando ateh esses dias que nao arrumava nada =) hahaha boa hein!!

abraço ai matheus!!

ps: kra nao consigo mais flar contigo no icq, ele num manda a msgs pra ti, quando puder me chama la no icq!!

cya!

M

isso ai jujo! logo q passou a semana academica aqui na universidade, recebi umas 4 propostas em uma semana só 8O hahaha, incrivel cara, bem, teu icq nunca mais apareceu on line aqui, mas vou te dar um toq mesmo assim!

F

Pessoal, gostaria de agradecer por terem me ajudado.
Configurando o web.xml desta forma, funcionoû

&lt;servlet&gt;  
&lt;servlet-name&gt;Autentica&lt;/servlet-name&gt;  
&lt;servlet-class&gt;pacote.Autentica&lt;/servlet-class&gt;  
&lt;init-param&gt;  
	&lt;param-name&gt;debug&lt;/param-name&gt;  
		&lt;param-value&gt;0&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;Autentica&lt;/servlet-name&gt;  
&lt;url-pattern&gt;/Autentica&lt;/url-pattern&gt;  
  &lt;/servlet-mapping&gt;

Valeu.

Criado 20 de maio de 2004
Ultima resposta 24 de mai. de 2004
Respostas 10
Participantes 3