Pergunta

Ei, eu tenho um wicket- e também uma pergunta relacionada ao servidor:

Construímos um pequeno servidor com Java (sim, eu sei, por que reinventar a roda ... eu entendi muito quando fiz a pergunta na lista de correio de postigos) ... então digamos, isso é desesperadamente necessário b/c ... ehm ... ainda não consigo pensar em um bom motivo, mas não há muito que eu possa fazer sobre isso ... então finalmente consegui esse pequeno servidor para executar servlets ... Até onde eu sei, para executar o wicket, você precisa de um servidor que possa executar servlets ... ((como a minha falta de inglês, digamos: deve ser um contêiner de servlet como o tomcat) ... agora que eu tenho Este servidor muito bonito, alguém tem uma idéia do que eu tenho que fazer, para que meus aplicativos de postigos funcionem nele? Como digo ao meu servidor que ele deve executar um aplicativo de wicket?

Espero ter explicado bem ... thnx com antecedência :)

... dg


Ok, uma pequena fonte ... eu fiz isso após um tutorial:

HttpServer onde acontece a "mágica":

 while (!shutdown) {
  // ... all the stuff before

    //check if this is a request for a servlet or a static resource
    //a request for a servlet begins with "/servlet/"
    if (request.getUri().startsWith("/servlet/")) {
        System.out.println( "SERVLET-REQUEST\n\n" );
      ServletProcessor2 processor = new ServletProcessor2();
      processor.process(request, response);
    }
    else {
        System.out.println( "STATICRESOURCE-REQUEST" );
      StaticResourceProcessor processor = new StaticResourceProcessor();
      processor.process(request, response);
    }
 // ... all the stuff after
}

Agora o servletProcessor:

public class ServletProcessor2 {

public void process(Request request, Response response) {

 String uri = request.getUri();
 String servletName = uri.substring(uri.lastIndexOf("/") + 1);
 System.out.println( "SERVLETNAME ... " + servletName );
 URLClassLoader loader = null;

try {
   // create a URLClassLoader
   URL[] urls = new URL[1];
   URLStreamHandler streamHandler = null;
   File classPath = new File(Constants.WEB_ROOT);
   // the forming of repository is taken from the createClassLoader method in
   // org.apache.catalina.startup.ClassLoaderFactory
   String repository = (new URL("file", null, classPath.getCanonicalPath() + File.separator)).toString() ;
   System.out.println( "REPOSITORY ... " + repository );
   // the code for forming the URL is taken from the addRepository method in
   // org.apache.catalina.loader.StandardClassLoader class.
   urls[0] = new URL(null, repository, streamHandler);
   loader = new URLClassLoader(urls);
 }
 catch (IOException e) {
   System.out.println(e.toString() );
 }
 Class myClass = null;
 try {
   myClass = loader.loadClass(servletName);
 }
 catch (ClassNotFoundException e) {
   System.out.println("FEHLER: " + e.toString() + " ... CAUSE: " + e.getCause() );
   e.printStackTrace();
 }

 Servlet servlet = null;
 RequestFacade requestFacade = new RequestFacade(request);
 ResponseFacade responseFacade = new ResponseFacade(response);
 try {
     servlet = (Servlet) myClass.newInstance();
     servlet.service((ServletRequest) requestFacade, (ServletResponse) responseFacade);
 }
 catch (Exception e) {
   System.out.println( "Fehler: " + e.toString() + " ... CAUSE: " + e.getCause() );
   e.printStackTrace();
 }
 catch (Throwable e) {
   System.out.println(e.toString());
 }

}
}
Foi útil?

Solução

A resposta simples é que você precisará implementar o API do servlet. A documentação do wicket não parece dizer qual a versão exata necessária, mas tenho certeza de que será pelo menos 2,4. Não é um trabalho que eu recomendo que você faça, é difícil fazer corretamente e você está apenas se abrindo para um mundo de dor.

Se você precisar incorporar um servidor, posso recomendar que você comece com cais e personalizá -lo para atender a todos os requisitos que você tiver. O Jetty tem uma licença muito permissiva, para que você não precise se preocupar em usar em um produto comercial e pode escalar praticamente com o melhor deles.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top