A fonte de todos os problemas: Apache HttpClient

Buenas!
Descobri a verdadeira fonte dos problemas do jSMS: a maldita biblioteca HttpClient! Me arrependo amargamente de tê-la utilizado! Descobri hoje que a minha implementação da Vivo funciona há meses! Graças à mudança do sistema da CTBC eu descobri isso. Hoje perdi uns minutos verificando as mudanças da CTBC. Após implementá-las, percebi que o jSMS gerava um erro muito semelhante ao que acontecia com a Vivo. Então, resolvi testar rapidamente com a HttpClient antiga e FUNCIONOU!

Sempre gostei da Apache, mas desta vez me decepcionei ;-\
Digo para vocês: se não fosse por essa merda de biblioteca, o jSMS não teria parado no tempo ;-( Bom, vou dedicar os próximos dias para trazê-lo de volta à vida ;-D

Como eu sempre gostei da Apache, resolvi dar mais uma chance e experimentei a nova versão (4) da HttpClient: funcionou também! Acho que vou investir novamente na Apache, até porque as mudanças arquiteturais que o jSMS terá que sofrer serão menores utilizando essa biblioteca ao invés de voltar para a anterior.

68 Responses to “A fonte de todos os problemas: Apache HttpClient”

  1. vitimnunes says:

    boa renatooo!
    ow, mas vc vai ter q gerar uma nova versão do jsms ou só alterar o código da operadora?!

    podemos esperar isto para qdo? abração!

  2. renatoc says:

    Vou mexer bastante no código-fonte do jSMS e um pouquinho no da operadora. O processo deverá estar completo logo após a páscoa.

  3. phadrs says:

    Olá! Aproveitando para informar um problema em relação ao “reconhecimento” de qual operadora o telefone é. O programa não está reconhecendo alguns números como sendo da operadora CLARO de Minas Gerais. O meu telefone mesmo, prefixo 8331, não é reconhecido. Ele não tem operadora, no programa, mas é da Claro!

  4. eduu says:

    Parou de funcionar! :~

  5. filpamplona says:

    Opa, e onde vai ser o almoço de lançamento da nova versão do Jsms???
    Agressivo??? Cerilo??? o Mamona’s?? ;-)

  6. salroots says:

    Olá Renato… tinha visto em algum lugar neste site que alguém teve um problema estranho com o jSMS no linux… aconteceu algo aqui parecido no Debian Etch depois que fiz um upgrade para o Sid: o jSMS executa normal abrindo o arquivo .jar direto no Gnome, mas não através do comando jsms -jar jSMS-XXX.jar, o qual está no script do pacote que fiz.

    De acordo com o log, o problema seria com o pacote libgcj9:

    xxx@xxx-desktop:~$ jsms
    Exception in thread “main” java.lang.ExceptionInInitializerError
    at java.lang.Class.initializeClass(libgcj.so.90)
    at java.lang.Class.initializeClass(libgcj.so.90)
    at java.lang.reflect.Method.invoke(libgcj.so.90)
    at javax.swing.UIDefaults.getUI(libgcj.so.90)
    at javax.swing.UIManager.getUI(libgcj.so.90)
    at javax.swing.JTree.updateUI(libgcj.so.90)
    at javax.swing.JTree.(libgcj.so.90)
    at javax.swing.JTree.(libgcj.so.90)
    at javax.swing.JTree.(libgcj.so.90)
    at jSMS.group.ContactGroupTree.(ContactGroupTree.java:55)
    at jSMS.group.ContactGroupManager.(ContactGroupManager.java:60)
    at jSMS.group.ContactGroupManager.(ContactGroupManager.java:39)
    at java.lang.Class.initializeClass(libgcj.so.90)
    at jSMS.JSMS.main(JSMS.java:123)
    Caused by: java.awt.IllegalComponentStateException: component java.awt.Label not showing
    at java.awt.Component.getLocationOnScreen(libgcj.so.90)
    at java.awt.event.MouseEvent.(libgcj.so.90)
    at java.awt.event.MouseEvent.(libgcj.so.90)
    at javax.swing.plaf.basic.BasicTreeUI.(libgcj.so.90)
    at java.lang.Class.initializeClass(libgcj.so.90)
    …13 more

    Consegui resolver o problema indo em /etc/alternatives/ e mudando o link que antes era

    java -> /usr/lib/jvm/java-gcj/jre/bin/java

    para

    java -> /usr/lib/jvm/java-6-sun/bin/java

    Agora o jsms roda normalmente com o comando java -jar jSMS-XXX.jar.

    E mais dois detalhes, este problema está ocorrendo apenas com o jsms, com outras aplicações não ocorreu nada por enquanto, e estou usando a versão 6 do Sun Java.

  7. rafaella aquino says:

    esta otima a nova versão! thanks!

  8. arkan says:

    aproveitando…

    estou com probleminhas na nova versão jsms, ele não esta aceitando o cadastro de alguns novos telefones da claro codigo 031 :| pq ?

    diz q nao é possivel enviar pq nao tem operadora…tal, alguma sugestao ?

  9. renatoc says:

    filpamplona: eu tava pensando no Agressivo… que tal?! Mas antes preciso ter tempo para implementar a nova versão ;-\

    salroots: muito estranho. A libbcj não faz parte da JVM da Sun, mas da GNU. Portanto, por algum motivo desconhecido, teu Linux estava usando a JVM errada. Isso acontece. A configuração que você fez resolve o problema. Com relação aos outros programas, por acaso eles não apresentam interface gráfica?

    arkan: a sugestão mais rápida (enquanto não sai uma nova versão) é selecionar manualmente a operadora na aba Operadoras.

  10. maysamarques says:

    Olá, uso o jsms a bastante tempo. só envio msgs para celulares da tim. alguem paga por isso? quem paga por isso? pq eu nao to pagando e li que só o da tim não é gratuito.

  11. maysamarques says:

    ah.. detalhe: eu mando para celulares tim, mas to mandando pela operadora OI. é por isso que não tem custo? o que aconteceria se eu mandasse pela operadora tim, nunca tentei… Obrigada!!

  12. salroots says:

    Fala Renato,

    Então, acho que peguei o problema. O interpretador java padrão do debian é o gij (acredito eu)… ao fazer o upgrade para o sid, o gij deve ter sido definido como interpretador java padrão por cima do sun-java… eu tinha dado uma pesquisada no google a respeito e vi que tem algumas pessoas com esse problema, o jsms não abre, apenas exibe o icone do programa e fecha. Provavelmente é por esse motivo. A solução seria então apenas desinstalar os pacotes gij e gcj e deixar apenas o sun-java. Quanto aos outros programas, ele são mais compatíveis com o gij, chegam a exibir a interface e tudo mais, mas algumas (na verdade várias) funções apresentam erro. Se você conhece um comando para rodar um arquivo .jar direto no interpretador da sun me passe que eu arrumo o pacote. No script eu deixei apenas como “java -jar jsmsx.xx.jar”…

  13. renatoc says:

    maysamarques: sim, é por isso que não tem custo. Para mandar através da operadora TIM, é necessário ser cliente da mesma e pagar pelo envio.

    salroots: desinstalar o gcj não é uma boa, pois há pacotes que dependem dele. O importante é definir a JVM da Sun como a padrão. Com relação a um comando especial para a JVM da Sun, eu não sei se existe um. Você também não pode colocar o caminho completo do binário porque isto varia de acordo com versão. Não sei se existe alguma alternativa. O correto é deixar Java mesmo.

  14. Já que o fórum está inabilitado temporariamente só achei este meio de comunicação. Quero implementar um serviço de envio de mensagens num site que estou desenvolvendo. Estou trabalhando com servletes e JSP. Será que alguem tem alguma dica? o código fonte do jSMS pode ser modificado e colocado numa aplicação web?

  15. marcelo.and says:

    C:\jsms>java -jar c:\jsms\jSMS-261.jar -verbose
    17/03/2008 09:45:04 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:45:04 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:45:25 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:45:25 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:45:46 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:Connection timed out: connect
    17/03/2008 09:45:46 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:46:31 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:46:31 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:46:53 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:46:53 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:47:14 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:47:14 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:47:59 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:47:59 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:48:20 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:48:20 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    17/03/2008 09:48:41 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request:
    Connection timed out: connect
    17/03/2008 09:48:41 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request

  16. marcelo.and says:

    Renato, o que preciso liberar pra conseguir a conexão? O erro está no post anterior.
    Obrigado,
    Marcelo

  17. rodrigom says:

    Amigo, como não encontrei nenhuma outra forma de contato estou postando por comentário mesmo… tenho uma idéia de uma modificação simples que permitiria utilizar o jsms direto do pen drive, levando as configurações para qq pc… se houver interesse, entre em contato comigo por favor

  18. teteu86 says:

    Renato tudo jóia? Estou com o Rodrigo também, queria saber como faço pra usar o jSMS em pendrives. É só copiar a pasta “.jsms” e deixar na mesma pasta do aplicativo no pendrive?

    Feliz páscoa para todos.

  19. vitimnunes says:

    rodrigom
    teteu86

    eu já fiz issu uma vez (no linux) e funcinou… realmente é só copiar a pasta .jsms pra raiz do executável…

    mas dae surgiu um problema: de vez em qdo ele chama as configurações do usuário $HOME/.jsms (se o jsms estiver instalado no pc)

    lembrando q issu vale (testado por mim) apenas no arquivo .jar (no exe eu num sei)

    da uma olhada nessa dica (http://www.vivaolinux.com.br/dicas/verDica.php?codigo=9372)

    abrass!

  20. vitimnunes says:

    ow renatooo!
    tamus anciosos pelas modificações!!!

    boto fé d+ no jsms!!

    abração!

  21. thiago sum says:

    Muito útil o programa. É uma pena a VIVO não funcionar, já que o celular que mais necessito mandar SMS é da VIVO.
    Espero ansioso pela atualização que faça funcionar a VIVO.

    Continues sempre a fazer esse ótimo trabalho que estas a fazer.

    Abraços, Thiago Sum.

  22. as mensagens pra claro excederam o limite…..

  23. e isso faz uns 3 dias!!!!!

  24. renatoc says:

    fernandofat_si: poder até pode, mas vai dar um pouco de trabalho. O jSMS não foi desenvolvido para WEB, mas você não deverá sofrer muito para convertê-lo. O segredo está na classe SendMessageAction, que prepara a mensagem para envio, e em SenderThread, que inicia o processo de envio.

    marcelo.and: você está utilizando proxy, certo? Este erro acontece durante o download de operadoras e verificação de atualizações?

    rodrigom: o jSMS já é capaz de fazer isso. O que está faltando é criar um wizard para tal. Me mande um email com a sua idéia: renatoc neste domínio.

    teteu86: sim. Ao iniciar o jSMS, ele verifica se existe uma pasta .jSMS no diretório atual. Se existir, a mesma é utilizada. Dica: remova o arquivo jSMS.properties de dentro desta pasta.

    vitimnunes: é isso ae mesmo!

    rhuan.barreto: dê uma lida nesta pergunta freqüente para saber o que isto significa.

    Senhores: é com prazer anuncio que em breve teremos uma versão beta. Recém modifiquei o núcleo e já consigo enviar mensagens para a Claro. O próximo passo é adaptar as operadoras ao novo jSMS. Mas isto não deve demorar muito.

  25. guru says:

    Oi Renato, estou muito satisfeito com o jsms. Comigo funciona todas as operadoras, uma beleza, menos a Vivo é claro. Nunca tive problemas com nenhuma delas. PARABÉNS!, Aguardo ancioso a nova versão.

  26. marcelo.and says:

    Renato, o erro ocorre só na hora de enviar as mensagens, a atualização do aplicativo e das operadoras está funcionando. Quando mando enviar dá erro em 25% da operadora Brasil Telecom e 50% da OI. Quais as portas que tenho que liberar para conseguir enviar? A porta 3128 já está liberada.

  27. o problema e que o limite está permanente comigo…
    ae eu vo no site da claro e consigo mandar mensagens normalmente!!!!!
    essa restricao de mensagens é permanente?

  28. rodrigom says:

    vitimnunes

    aí que tá, qdo vc muda de pc perde as configurações =/
    pior q a solução é super simples, é só passar a salvar o arquivo na mesma pasta do jsms ao invés de salvar no pc… só q eu n consigo entrar em contato com os criadores =/

  29. marcelo.and says:

    Renato, já consegui me conectar. Só estou conseguindo enviar mensagens para a operadora BrasilTelecom, as demais nao envia, o que pode ser? Obrigado.

  30. vitimnunes says:

    rodrigom

    psé, se eu sacasse um pouquinho mais de Java acho q teria uma luz… pelo que entendi (num sei se eh bem isso) o jSMS procura o diretório .jSMS na pasta do usuário primeiro e depois que ele procura na pasta local do executável (no meu caso .jar)!

    =/

    vou dar uma olhada no código, assim… por cima! Quem sabe não aparece uma luz! Até lá tente falar com o renato!

    abras!

  31. vitimnunes says:

    rodrigom

    nops…

    acabei de olhar o código do jsms e ta certim msm… se vc utilizar como esta na dica do vol sempre que você chamar o shell-script jsms que esta no prendrive ele vai usar os padroes do pendrive. exemplo:

    root@darkstar: ~ # /mnt/pen/jsms

    ele vai chamar a pasta /mnt/pen/.jSMS

    abrass!

  32. 4188046030 says:

    Estou usando a versao 2.61 e estou impressionado , pena que a dona VIVO nao queira participar ($), Bom trabalho!!!!!!!!!

  33. fconduru says:

    gostaria de saber se o programa esta com algum defeito ou necessitando de atualização pois o mesmo estava funcinoando muito bem após a ultima versão mais agora já não esta mandado mais para tim via oi, o programa diz que foi enviado mais a mensagem não chega, gostaria de saber se da pra fazer alguma coisa ou se tem alguma outra versão que ainda esteja funcionado para esse fim, e como posso baixa-la, parabéns a que desenvolve este programa pois o trabalho esta muito bom.
    grato pela atenção

  34. andrews says:

    gostaria de dar uma sugestão para o programa
    criar uma opção no menu para colocar ar aquivos funto com o programa, para poder usar em pen driver, não importando o diretório dela, pois do geito que ta quando eu coloco o ben em outro pc e ele fica com uma letra diferente ele não pega os arquivos do ligar correto
    ha e esta versão esta enviando sms para tim pela oi, aqui esta enviando normal

    Obrigado

  35. Frederic says:

    Ola, boa noite queria saber se existe alguma previsão de funcionamento para o site da VIVO, não entendo muito bem de programação sou apensas usuário adepto as msgs do jsms. Queria só saber pq li que até depois da pascoa estaria funcionando… Ocorreu algum problema?

  36. flaviorosaneli says:

    Porque não consigo enviar mensagens para as seguintes operadora

    Vivo e Brasiltelecom (Enviado via OI)

    Se puder me ajudar – flaviorosaneli@bol.com.br

  37. flavioj.oliveira says:

    Boa noite,meus parabeis para o programador deste programa, que simplificou muinto minha vida ,testei todos mais este e o melhor e vai ficar melhor ainda como pude ver os assuntos ai escritos sobre as outras operadoras que vai funcionar, este programa e o menhor do genero nao tem outro parabeis

  38. joelnonato says:

    Pow abençoado
    esse programinha é um luxo funcionando como é util
    pow não demore muito estamos precisado dele muito bom
    não ligue para os invejosos as mascaras cairão

  39. fernandosinesio says:

    Olá, gostaria de parabenizar o Renato e a todos que contribuiram para o desenvolvimento deste software.
    Gostaria, também, de poder dar minha contribuição.

    Verifiquei na internet a possibilidade de envio SMS para a operadora TIM, através de sites internacionais de envio SMS.

    Nesse site, dentre outros, é possível enviar SMS free para TIM :
    http://www.voipcheap.com/en/sms_instructions.html

    O problema é a dependência do cadastro de login para o envio do SMS.

    Espero, ter ajudado.
    Fernando Sinesio
    fernandosinesio@gmail.com

  40. tapajos says:

    Estou tendo um problema. A aplicação está tentando atualizar a lista de operadoras e fica com a mensagem “Removendo Telemig 13%” e não sai disso.
    Creio que tenha algum problema no lugar de onde ele baixa as operadoras. Não ?

  41. andrews says:

    pessoal, num to + conseguindo enviar nenhuma mensagem pela operadora oi nem eu nem nenhuma amigo meu, ele mudaram o sisyema de envio?

  42. joseandremc says:

    Gostaria que nas próximas versões para Windows também fosse lançada uma alternativa “portable”.

    Nesta versão, o arquivo “jSMS.properties” seria editado para achar o diretório “.jSMS” na pasta corrente.

    Segui a recomendação de alguns comentários e consegui fazer a dica funcionar apenas com o arquivo “.jar”.

    O ideal é que a versão portable viesse zipada com o executável e a pasta “.jSMS”. Ao extrair o arquivo, o usuário teria a liberdade de mover a pasta do programa para qualquer outro lugar, sem que isso interferisse no funcionamento.

    Ao rodar o “.exe” o programa verificaria se o usuário possui o java instalado e em caso negativo redirecionaria para a página de download.

    Fiz o cadastro (odeio isso) apenas para postar essa sugestão. O programa é excelente e com alguns ajustes pode se tornar perfeito. Parabéns aos idealizadores e às pessoas que fazem a manutenção do projeto.

  43. wsjunior says:

    A páscoa do ano que vem?

  44. guru says:

    Não querendo te cobrar, mas a Páscoa já passou…..quem sabe para o dia das Mães. Seria legal todos mandarem torpedinho para suas mamães. Fica aqui minha sugestão.

  45. arkan says:

    Estou com um probleminha q desde q saiu a versão 261 tem acontecido…

    qnto eu digito mensagens e envio para uma pessoa da oi dddxx, e nao grupos. A mensagem para, tipo se o texto for 330 letras, ele pica a mensagem em 6, e aí na quarta ele congela e fica esperando ate aparecer o codigo q nunca vem.

    ai preciso fechar o programa e ir no historico e reenviar as msgs q estao la como canceladas…

    o q pode ser isso ?

    desculpe a torraçao !!

    kan

  46. arkan says:

    @tapajos

    Respondendo a sua pergunta a telemig foi comprada pela vivo e ela ja começou a bloquear o sistema novo, novas programações da central para chegaram p/ telemig celular e eles estão trabalhando desde quarta passada, e em breve a vivo vai fazer igual a tim, ela vai cobrar/exigir.

  47. tapajos says:

    Arkan, meu objetivo não é enviar mensagem para a Telemig. Baixei e gostaria apenas de usar mas é impossível.
    Coloquei um printscreen do que estou falando (com nome jsm.png) em http://www.dcc.ufrj.br/~tapajos

    []’s

  48. robertoalves says:

    RENATO, EU LI NUM BLOG DE BAIXAR MP3 ONDE AFIRMAVA QUE O CRIADOR DO JSMS HAVIA RECEBIDO UMA PROPOSTA IRRECUSAVEL DA VIVO PARA VENDER OS DIREITOS DO JSMS. ISSO JA OCORREU? ATE QUE PONTO ISSO É VERDADE. EU NUM ACREDITO ATE QUE SE PROVE O CONTRARIO. DESCULPE, MAS SERIA INTERESSANTE ISSO SER ESCLARECIDO.

  49. rafaeltdk says:

    AMIGO SEM QUERER SER CHATO MAS USO SEU PROGRAMA A ALGUM TEMPO E REALMENTE QUEBRA UM PUTA GALHO GOSTARIA DE PEDIR PARA VC SE PODESSE BOLAR ALGO PRO IPHONE A COMUNIDADE DE BRASUCA IA AGRADECER BRIGADAO

  50. jhon says:

    Velhu ….
    Aqui para mim esta dando um pauzinho,
    Seguinte.
    Quando eu abro o “jsms-2.61″ ele abre a janela “atualizando operadoras”
    ai ele dá um erro “site:Erro de leitura”,

    Uso em um ambiente que possui proxy e esta bloqueado para transmissoes ftp.

    eu fui em ferramentas -> servidor proxy -> coloquei todos os dados(servidor,porta,nome,senha). E num funfou …

    Vlw … velho … Este seu programa é muito 10 …
    Quebra um puta galho…
    blz …
    tudo de bom …
    se cuida …
    até

Leave a Reply

You must be logged in to post a comment.