JoptionPane não funciona na rede interna da empresa

10 respostas Resolvido
javaweb
jairodione

Olá Pessoal!

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!

10 Respostas

javaflex

Nessa máquina do tomcat da empresa você consegue conectar diretamente no banco de dados usando os mesmos dados de conexão?

JoptionPane (Swing) com Tomcat? Explica isso ai melhor.

rodriguesabner

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.

staroski

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.

j-menezes

Depois do que foi exposto, você terá que repensar as coisas.
Servidor (usando Tomcat) e Cliente (usando Swing).

Se pretende que o servidor seja tambem um cliente. ai já será outra historia.

jairodione

Olá staroski!

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?

darlan_machado

Cara, você está construindo/dando manutenção em que tipo de sistema? Web ou desktop?

jairodione

Olá darlan_machado

Cosntruindo.
Web.

darlan_machado

Certo, então você vai conseguir usar um alert. Porém, precisa verificar se as ferramentas que está utilizando fornecem um meio de arrumar isso.

jairodione

Certo Darlan!

Vou retirar todo o código do arquivo empty file e irei colocar em um arquivo jsp, e daí irei criar o alert!

jairodione
Solucao aceita

Olá Pessoal!

Fiz o seguinte. Como o darlan_machado fez um comentario e através dele fiz uma pagina jsp, descrita abaixo:

<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<%@taglib tagdir="/WEB-INF/tags" prefix=“tagsJairo” %>

Lista de Pastas Solicitadas Pendentes

<% 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

Criado 11 de fevereiro de 2020
Ultima resposta 4 de mar. de 2020
Respostas 10
Participantes 6