E ae pessoal blz!
Eu estou usando servlet pra escutar pedidos http sobre tomcat, e está funcionando blz. O servlet está espera por um pedido e quando o recebe executa o metodo doPost ou doGet dependendo do tipo de pedido.
Meu problema é que por motivos impostos pela empresa nao se pode usar Servlet porque demora alguns segundos preciosos por ser executado no tomcat,Assim terei de criar um listener em execucao na propria aplicacao ( sem tomcat), mas nao tou vendo com fazer isso, como posso ficar escutando pedidos http sem o uso so servlet que é um listener http? È possivel isso?
Vc vai criar uma classe que vai ter q implementar o HttpServletRequest (ou seja uma servlet) caso contrário vc não vai conseguir receber as requisições. Aí vai criar algum método que fique verificando de milésimos em milésimos se alguem fez alguma alteração na sua requisição.
Tem certreza q isso é viável para o seu problema ???
sergiotaborda
galvanize:
E ae pessoal blz!
Eu estou usando servlet pra escutar pedidos http sobre tomcat, e está funcionando blz. O servlet está espera por um pedido e quando o recebe executa o metodo doPost ou doGet dependendo do tipo de pedido.
Meu problema é que por motivos impostos pela empresa nao se pode usar Servlet porque demora alguns segundos preciosos por ser executado no tomcat,Assim terei de criar um listener em execucao na propria aplicacao ( sem tomcat), mas nao tou vendo com fazer isso, como posso ficar escutando pedidos http sem o uso so servlet que é um listener http? È possivel isso?
Não usar Servlets para tratar requisções http é uma burrice. Se quiser tratar a requisção dentro da aplicação ( seja lá o que isso significa , mas suponho que quer dizer embutido ) pode usar o Jetty. É um Sevlet container como o tomcat que permite extenções e incorporação em aplicações “maiores”.
Usando Jetty vc pode continuar usando Servlets (aliás usando o codigo que ja tem) e ao mesmo tempo fazer parecer que é a sua aplicação que está respondendos os requests.
S
soudaniel_01
cara tu pode usar sockets, da uma pesquisada…
G
galvanize
È viavel , mesmo n sendo obrigam-m ea fazer desse modo. A sulucao funciona blz usando o servlet e tomcat mas tenho de mudar. O problema é usar o tomcat, nao posso usar. Não posso criar o servlet sem estar no tomcat ou outro servidor, pois não? criar algum método que fique verificando de milésimos em milésimos se alguem fez alguma alteração como diz estarei na mesma situacao que usando o doPost, correndo sempre sobre tomcat, certo?
obrigado Giulliano
G
galvanize
valeu a todos, sergiotaborda não usar é uma burrice sim, mas não é decisao minha, eu fiz com servlet mas não pode ser. vou pesquisar o Jetty
Giulliano
Cara não sei se vc escreveu rápido demais ou não soube se expressar mas eu não entendi bulufas da sua resposta…esta meio sem nexo as suas frases…acho q vc escreveu muito rápido…
Se o seu problema é o tomcat use outro servidor…não precisa ser tomcat…e eu duvido que exista outro modo mais rápido que uma servlet
G
galvanize
desculpa Giulliano foi rapido sim, sem verificar se estava escrevendo bem ou nao. Tambem duvido que haja modo mais rapido mas tenho mesmo de criar um listenner de http simples,. sem tomcat ou outro servidor. A questão é, como ficar á escuta de pedidos?assim nao sei…
sergiotaborda
galvanize:
desculpa Giulliano foi rapido sim, sem verificar se estava escrevendo bem ou nao. Tambem duvido que haja modo mais rapido mas tenho mesmo de criar um listenner de http simples,. sem tomcat ou outro servidor. A questão é, como ficar á escuta de pedidos?assim nao sei…
Existem opções para tratar requsições HTTP sem as vantagens de servlet. Dependendo do que vc vai fazer pode ser uma opção usar um servidor HTTP mais básico como o http://docs.safehaus.org/display/ASYNCWEB/Home
que é baseado no MINA. “simples” não é, pois o mais simples é servlets mesmo, tlv seja mais eficiente para coisas stateless (tipo webservice broker). Dá uma pesquisada. Tlv esses micro servidores http sejam a solução.
G
galvanize
Só mais uma duvida. Se criar um servidor Socket, e enviar um post ou get para o porto onde está funcionamdo esse socket recebo o conteudo desse post? Se estabelecer ligacação Socket enviando texto sei que dá. mas se for o post , depois consigo obter o conteudo enviado? Mesmo vindo confuso o conteundo não fazia mal, ai faria o parse da mensagem…
Meu problema é o protocolo, nao sei se enviando post nao receberei apenas do tipo “POST / HTTP/versao”. o conteundo não vou receber, nao é?
G
galvanize
pessoal… arranjei solucao , a jre tem a library. Preciso melhorar a leitura da body do pedido. o imputStream codifica a mensagem enviada, tem de ser descodificada , daí o byte[]… mas não está muito bom, os espaços ficam com simbolo +, mas a ideia é esta. valeu pela ajuda
is.read();// … read the request bodyStringBufferout=newStringBuffer();byte[]b=newbyte[4096];for(intn;(n=is.read(b))!=-1;){System.out.println(“pedido”+out.append(newString(b,0,n)));}
System.out.println("pedido::::"+is.toString());
Stringresponse=“Thisistheresponse”;t.sendResponseHeaders(200,response.length());OutputStreamos=t.getResponseBody();os.write(response.getBytes());os.close();System.out.println("}");}publicstaticvoidmain(Stringargs[]){try{HttpServerserver=HttpServer.create(newInetSocketAddress(91),0);server.createContext("/",newSample());server.setExecutor(null);// creates a default executorserver.start();while(true){try{Thread.sleep(5000);}catch(InterruptedExceptione){System.out.println(“Exit.”);}}}catch(IOExceptione){e.printStackTrace();}}}