Problema com tomcat

8 respostas
leandrosu

Bom dia pessoal,

Tenho uma aplicacao desenvolvida em JSP + MYSQL.
Esta aplicacao esta rodando normalmente no windows, ( troquei o encoding do tomcat para UTF-8 ).

Agora o problema foi quando jogamos essa aplicacao no server LINUX, os fontes sao os mesmos mas nao consigo fazer a inclusao no MYSQL.
Printei a sql pra ver se retornava algum erro e nao retorna aparentemente nada de errado.

Segue

INSERT INTO intranet_rnc(proveniente,ocorrencia,obra,setor,terceiros,erro,descricao,usuario,data,disposicao)VALUES('Inspecao','Produto','Sandvik MGS S.A(SIMANDOU) galerias e Casa de trannferência','DTI','','Erro / Falta de Identificação','Nos últimos dias o Anonymous tem estado presente quase que diariamente aqui na capa do Tecmundo E hoje, mais uma vez, eles estão assumindo uma luta virtual ? só que agora pedem ajuda para todos internautas do mundo inteiro Segundo um comunicado publicado pelo grupo na internet, nas últimas 48 horas uma grande campanha de filtragem de conteúdo vem acontecendo no Irã Tudo teria começado de maneira calma e devagar, mas agora isso se tornou mais ?agressivo?, com bloqueio de tráfego SSL TLS na maioria dos provedores iranianos O que os integrantes do Anonymous pedem é que internautas de todo o planeta os ajudem por meio da utilização de ?Tor bridges? capazes de prover acesso à internet para os habitantes do país que se encontram bloqueados Ainda nessa mensagem eles avisam dizendo que não se trata de um processo fácil e trazem alguns links com as instruções técnicas de como deve proceder quem deseja participar dessa mobilização Leia mais em http www tecmundo com br ataque hacker 19367 anonymous convoca internautas para ajudar iranianos a acessar a web htm#ixzz1mFyAkEa6','dti','1111-11-11','Devolver');

No caso de tentar inserir essa sql direto no banco ele roda legal.

Codigo do insert

Conector conecta = new Conector();
    		conecta .conectar();				
    		String SQL = "INSERT INTO intranet_rnc(proveniente,ocorrencia,obra,setor,terceiros,erro,descricao,usuario,data,disposicao)VALUES('"+proveniente+"','"+ocorrencia+"','"+obra+"','"+setor+"','"+terceiros+"','"+erro+"','"+descricao+"','"+sessaoUsuario+"','"+dataUsa+"','"+disposicao+"');";
  			out.print(SQL);
    		int i = conecta .executarAtualizacao(SQL);
    		if(i==0)
			 

					out.print("<div class=error_box><strong>Erro ao abrir RNC.</strong></div>");
 
			else{
	out.print("<div class=\"tip_box\">Rnc aberto com sucesso.</div>");		  
 
    			}
    		
    		conecta.fechar();

Sera que alguem pode me dar uma dica do que pode ser esse problema ?
obs: ja alterei o encode do tomcat em todos os xmls que encontrei ( deixei todos utf-8 )

Abraco

8 Respostas

ssh

Cara eu não intendi qual o seu real problema.

Você está desenvolvendo localmente na plataforma windows, e em produção é em linux?

localmente você consegue fazer a inserção no mysql normalmente e no linux não?

posta o método “executaAtualização()” ai p/ gente dar uma olhada.

abs

leandrosu

ssh,

Entao qto ao codigo tenho certeza que nao é pois a aplicacao esta funcionando no windows.
O que acontece é o seguinte.

Copiamos a aplicacao pro servidor LINUX, esta rodando legal ( faz as consultas tudo certo ) .
O problema esta na hora de inserir no banco ( o mesmo codigo funciona no windows mas no linux nao cadastra ) .

[img]http://lojasdopovo.com.br/screen.png[/img]

Se eu copiar a sql e colar direto no banco ele cadastra normal.
Sera que o erro nao esta no encode do tomcat no linux ?

ExecutaAtualizacao()

public ResultSet executarConsulta(String sql){

		try{
			if (s==null) s= conn.createStatement();
  			System.out.println("Consultando..");
  			ResultSet r = s.executeQuery(sql);

 		 return r;
	} catch (Exception e)
		{System.out.println(e);}

  return null;
}

abraco

M
Não seria melhor assim?
Conector conecta = new Conector();  
Intranet novo = new Intranet();
// popula o Objeto novo

int i = conecta .executarAtualizacao(novo);  
if(i==0) { 
    out.print("&lt;div class=error_box&gt;&lt;strong&gt;Erro ao abrir RNC.&lt;/strong&gt;&lt;/div&gt;");  
else{  
    out.print("&lt;div class=\"tip_box\"&gt;Rnc aberto com sucesso.&lt;/div&gt;");          
}
Para este código funcionar você cria a classe Intranet.
import java.util.Calendar;


public class Intranet {
	private String proveniente, ocorrencia, obra, setor, terceiros, erro, descricao, usuario, disposicao;
	private Calendar data;
	
        // Gere os Getters e Setters
}
E modifica a classe Conector.
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Conector {
	private static Connection conexao;

	public Conector() {
		if (conexao == null) {
			try {
				conexao = DriverManager.getConnection("jdbc:mysql//ip/banco",
						"usuario", "senha");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				throw new RuntimeException(e);
			}
		}
	}

	public int executarAtualizacao(Intranet intranet) {
		int atualizados = 0;
		String SQL = "INSERT INTO intranet_rnc(proveniente,ocorrencia,obra,setor,terceiros,erro,descricao,usuario,data,disposicao)VALUES(?,?,?,?,?,?,?,?,?,?)";

		try {
			PreparedStatement stmt = conexao.prepareStatement(SQL);

			stmt.setString(1, intranet.getProveniente());
			stmt.setString(2, intranet.getOcorrencia());
			stmt.setString(3, intranet.getObra());
			stmt.setString(4, intranet.getSetor());
			stmt.setString(5, intranet.getTerceiros());
			stmt.setString(6, intranet.getErro());
			stmt.setString(7, intranet.getDescricao());
			stmt.setString(8, intranet.getUsuario());
			stmt.setDate(9, new java.sql.Date(intranet.getData()
					.getTimeInMillis()));
			stmt.setString(10, intranet.getDisposicao());

			atualizados = stmt.executeUpdate();
			stmt.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}

		return atualizados;
	}

	// Outros métodos
}
leandrosu

Boa tarde Marcelo Junior,

Cara primeiramente obrigado pelas dicas.
Mas o que realmente preciso no momento é descobrir o por que que ele nao esta inserindo os dados quando as variaveis possuem acentos.
No windows esta funcionando perfeito. Ja no linux eu consigo cadastrar sem acento quando o ususario insere palavras com acentos nao tem jeito.

Tem alguma ideia do que pode ser ?

Abraço

MarcosPadilha

Só pra deixar a coisa mais complicada, e complementando informações no post do leandrosu

Se utilizar um único acento o insert ocorre normalmente, porém gravando “é” como “é”, e ao utilizar mais de um acento não funciona.

ssh

cara, esse problema é um tanto quanto estranho.

você ja verificou a codificação que o mysql está utilizando?

acredito que o tomcat não esteja envolvido nisso.

MarcosPadilha

ssh, BD já foi setado para utf-8, ascii, latin, e nenhuma fez a diferença, em ambos os testes o resultado é sempre o mesmo, grava “é” como “é”, e isso se aplica a qualquer acento.

ssh

mas agora está gravando?

aqui no trabalho utilizo uma função java que converte o retorno do bd em UTF-8.

provavelmente ele deve ficar esquisito no banco mesmo.

Criado 13 de fevereiro de 2012
Ultima resposta 13 de fev. de 2012
Respostas 8
Participantes 4