doPost sem Servlet

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?

alg me pode ajudar?

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

[quote=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?
[/quote]

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.

cara tu pode usar sockets, da uma pesquisada…

È 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

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

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

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…

[quote=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…
[/quote]

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.

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 é?

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

import java.io.;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.
;

public class Sample implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
System.out.println(“handle{”);
InputStream is = t.getRequestBody();

is.read(); // … read the request body
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = is.read(b)) != -1;) {
System.out.println(“pedido”+out.append(new String(b, 0, n)));
}

    System.out.println("pedido::::"+is.toString());

String response = “This is the response”;
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
System.out.println("}");
}
public static void main (String args[]) {
try {
HttpServer server = HttpServer.create(new InetSocketAddress(91), 0);
server.createContext("/", new Sample());
server.setExecutor(null); // creates a default executor
server.start();
while(true) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println(“Exit.”);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}