Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Servlet + arquivos TXT

Olá, Estou tentando fazer um servlet que crie ou edite um arquivo no raspberry pi 3B (Raspbian). Mas estou tendo problemas, se eu chamo o método doPost sem as linhas para criar ou escrever um arquivo ele funciona e responde 200, mas se eu tento criar um arquivo no desktop ou editar, recebo a mensagem de falha na comunicação (essa mensagem provém de um if que fiz no aplicativo) . O problema está do lado do servidor Tomcat, alguém pode me ajudar?

8 respostas

Boa tarde Luiz, pode disponibilizar o código?

Claro,


@WebServlet("/pessoas")
public class NovaEmpresaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    String nome="";
    String horaIni="";
    String horaFim="";
    String id="";


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

         nome = request.getParameter("nome");
         horaIni = request.getParameter("horaIni");
         horaFim = request.getParameter("horaFim");
         // 
        //o comando abaixo funciona numa Java application normal, mas não no servlet. Sem ele o retorno é 200
        String sql = "Insere por obséquio" + nome+" "+horaIni+" "+horaFim;
         try {
                OutputStream fos = new FileOutputStream("C:\\Users\\Ks\\Desktop\\logPorra.txt");
                Writer osw = new OutputStreamWriter(fos);
                BufferedWriter bw = new BufferedWriter(osw);
                bw.write(sql);
                bw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
}

em qual linha ocorro o erro? Se tiver ai com a stacktrace pode me mostrar?

Guilherme, aí que tá!!

Eu testei diversas vezes na Raspberry e o processo simplesmente não executa, não mostra erro. (tanto é, que nem código retorna)

Segue o cód do botão

btn_incluir.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //se cadastrar no webservice então finish(); se não Toast "Erro no cadastro"
                //final Pessoa pessoa = helper.pegaPessoa();

               Call call= new RetrofitInicializador().getPessoaService()
                       .incluir(txt_nome.getText().toString(), txt_hora_ini.getText().toString(), txt_hora_fim.getText().toString());
               call.enqueue(new Callback() {
                   @Override
                   public void onResponse(Call call, Response response) {
                       Toast.makeText(FormularioActivity.this," Passou!!!", Toast.LENGTH_LONG);
                       if (response.code()== 200) {
                           /*PessoaDAO dao = new PessoaDAO(FormularioActivity.this);
                           dao.incluir(pessoa);
                           dao.close();*/
                           Toast.makeText(FormularioActivity.this, "Inseriu", Toast.LENGTH_LONG).show();
                       }else {
                           Toast.makeText(FormularioActivity.this, " "+response.code()+" ", Toast.LENGTH_LONG);
                       }

                   }
                   @Override
                   public void onFailure(Call call, Throwable t) {
///O retorno que eu tenho é este aqui 
                       Toast.makeText(FormularioActivity.this,"Não foi possível comunicar com o servidor",Toast.LENGTH_LONG).show();
                   }
               });
                finish();
            }
        });

Tentei agora pelo windows e funcionou. Seria o meu problema Permissão do Tomcat ? Se sim , como eu poderia resolver isso?

A servlet no tomcat no seu S.O. funcionou da forma que você queria?

Sim, funcionou perfeitamente (Windows 10).... Já no Raspbian estou penando

solução!

Guilherme, obrigado pela ajuda. Encontrei qual era o problema. No Linux tem a questão das permissões de arquivos e diretórios. Resolvi com um chmod 777.

Obrigado.

Que bom que conseguiu Luiz .e muito obrigado por postar aqui a solução, isso ajuda demais o fórum!

Abraços e bons estudos