Tenho um sistema que está sendo utilizado em uma empresa, ele exibe uma lista de pedidos. Criei um metodo que lista somente os pedidos pendentes, o usuario do sistema pediu que toda ez que existir uma novo pedido pendente, que o sistema o informasse “chame sua atenção”.
Criei no metodo que lista os pedidos pendentes uma condição em que caso exista pedido pendente o sistema emite um aviso “JoptionPane”. No meu PC funciona perfeitamente bem, mas quando coloco o servidor apache tomcat na empresa, o sistema não exibe o JoptionPane, fica processando sem exibir nada. Abaixo está descrito o metodo que utilizo na classe DAO:
//lista pendencia paginada no sistema
public List getListaPastaPendentePaginada(int pagina, String ordenacao) throws SQLException {
int limite = 6;
int offset = (pagina * limite) - limite;
String sql = sql = "select * from pastas where entregue = false and devolvida = false and naolocalizada = false order by " + ordenacao + " desc LIMIT 6 OFFSET " + offset;
PreparedStatement ps = null;
ResultSet rs = null;
List<Pastas> listaPastasPendente = new ArrayList<Pastas>();
try {
ps = conexao.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
Pastas pastas = new Pastas();
pastas.setMovimento(rs.getInt("movimento"));
pastas.setData(rs.getDate("data"));
pastas.setUsuario(rs.getString("usuario"));
pastas.setImovel(rs.getString("imovel"));
pastas.setObsUsuario(rs.getString("obsusuario"));
pastas.setObsArquivo(rs.getString("obsarquivo"));
pastas.setEntregue(rs.getBoolean("entregue"));
pastas.setDevolvido(rs.getBoolean("devolvida"));
pastas.setNaoLocalizada(rs.getBoolean("naolocalizada"));
listaPastasPendente.add(pastas);
//Abaixo está a condição que exibe o JoptionPane
if(!pastas.isDevolvido() && !pastas.isEntregue() && !pastas.isNaoLocalizada()){
JOptionPane.showMessageDialog(null, "Existe uma nova solicitação de pasta!");
}
}
return listaPastasPendente;
} catch (SQLException ex) {
Logger.getLogger(PastasDAO.class.getName()).log(Level.SEVERE, null, ex);
} finally {
//ps.close();
//rs.close();
}
return null;
}
OBS.: VOLTO A REPETIR NO MEU PC FUNCIONA PERFEITO MAS LÁ NA EMPRESA QUE TEM UMA REDE, NÃO FUNCIONA!
Abre seu programa pelo cmd/terminal e vê os erros que apresentam. Se não mostrou o JOptionPane é pq deu erro em alguma coisa, e no erro vc nao colocou nenhuma mensagem visual na tela do cliente.
Você está ciente de que não faz o menor sentido usar a api do swing em uma aplicação que roda no servidor?
Se você está abrindo um JOptionPane, ele será apresentado na máquina onde o Apache estiver rodando e não nas máquinas do cliente.
O cliente nem precisa ter Java pra acessar suas páginas que estão no Apache.
Na sua máquina funciona porque tanto o cliente quanto o servidor são a mesma máquina.
Certo, eu não vou conseguir chamar o JoptionPane em outra maquina, mas posso substituir por um alert?
Se sim como fazer isso dentro de um metodo na classe Java, ou dentro de um arquivo empty File. Porque a tabela que lista as pendencias eu não criei em um arquivo .jsp e sim em um empty file .tag.
Caso não seja possivel vou ter de criar um arquivo jsp e chamar um script?
<%
List listaPendente = (List) request.getAttribute("sessaoPendente");
for (Iterator iterator = listaPendente.iterator(); iterator.hasNext();) {
Pastas pastas = (Pastas) iterator.next();%>
<%=pastas.getMovimento()%>
<%=pastas.getData()%>
<%=pastas.getUsuario()%>
<%=pastas.getImovel()%>
<%=pastas.getObsUsuario()%>
<%=pastas.getObsArquivo()%>
<%=pastas.isEntregue()%>
<%=pastas.isDevolvido()%>
<%=pastas.isNaoLocalizada()%>
<%if(!pastas.isEntregue() && !pastas.isDevolvido() && !pastas.isNaoLocalizada()){%>
script>
alert("Existe Uma Nova Solicitação de Pasta!");
script>
<%}%>
<%}
%>
Então o sistema ficou com o alert da forma que eu queria