Pregunta

Hey yall, tengo un wicket- y también una cuestión relacionada con el servidor:

Hemos construido un pequeño servidor con Java (sí, lo sé, ¿por qué reinventar la rueda ... Tengo que mucho cuando hice la pregunta en la lista de correo-portillo) .... así que vamos a por ejemplo, se necesita desesperadamente b / c ... ehm ... todavía no puedo pensar en una buena razón, pero no hay mucho que pueda hacer al respecto ... así que finalmente me dieron este pequeño servidor para ejecutar servlets ... por lo que yo sé, para ejecutar portillo que necesita un servidor que puede ejecutar servlets ... (como por mi falta de Inglés Digamos: se supone que es un contenedor de servlets como Tomcat) ... ahora que yo tener esta muy bonito servidor, ¿alguien tiene una idea de lo que tengo que hacer, por lo que mis wicket-aplicaciones se ejecutan en él? ¿Cómo le digo a mi servidor que se supone que debe funcionar un portillo-aplicación?

Hope he explicado bien ... thnx por adelantado:)

... dg


bien, un poco fuente ... me hizo esto después de un tutorial:

HttpServer donde la "magia" que sucede:

 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
}

Ahora el 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());
 }

}
}
¿Fue útil?

Solución

La respuesta simple es que se necesita para implementar el Servlet API . La documentación portillo no parece decir lo que la versión exacta requerida, pero estoy seguro de que será al menos 2,4. No es un trabajo que recomiendo que hagas, es una cosa difícil de hacer correctamente y su sólo abrir su auto a un mundo de dolor.

Si necesita integrar un servidor a continuación, puede ser que te recomiendo empezar con embarcadero y personalizarlo para cumplir con lo que cada vez los requisitos que tiene. Embarcadero tiene una licencia muy permisiva por lo que no tiene que preocuparse acerca de la utilización de un producto comercial y puede escalar más o menos con los mejores de ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top