¿Hay alguna manera por aplicación/contexto web para especificar un archivo de reescritura solo para esa aplicación web en particular? La única forma en que veo que esto funciona actualmente es a través de la línea de comando cuando lo inicias. Estaba pensando en una configuración en el archivo override.xml o incluso en el archivo xml de contexto.¿Se puede asignar por aplicación web los archivos jetty-rewrite.xml en Jetty?
Respuesta
Si usa los deployables de context.xml, puede integrar las reglas de RewriteHandler en el contexto específico de la aplicación xml.
Ejemplo: este es un reemplazo context.xml del ${jetty.home}/contexts/test.xml
que se encuentra en la distribución de embarcadero. Agrega una regla que simplemente agrega una cookie (visitada = sí) en la respuesta para todas las solicitudes.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
<Set name="contextPath">/</Set>
<Set name="handler">
<New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
<Set name="handler">
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test.war</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>
</New>
</Set>
<Set name="rewriteRequestURI">true</Set>
<Set name="rewritePathInfo">false</Set>
<Set name="originalPathAttribute">requestedPath</Set>
<!-- add a cookie to each path visited -->
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.CookiePatternRule">
<Set name="pattern">/*</Set>
<Set name="name">visited</Set>
<Set name="value">yes</Set>
</New>
</Arg>
</Call>
</New>
</Set>
</Configure>
Para comprobar que esta regla funciona, iniciar embarcadero, ir a http://localhost:8080/
y luego usar el "Sesiones" componente de prueba, verá que visited=true
será visible como una cookie en la parte superior.
_ "Si usa context.xml deployables" _ - No sé lo que eso significa, pero tengo cada contexto individual definido en '{embarcadero}/contextos/{nombre} .xml' - No tengo una prueba .xml o cualquier componente de prueba. –
Intenté aplicar este ejemplo a una configuración de contexto existente (transfiriendo los comandos Establecer de la configuración de WebAppContext a la etiqueta nueva respectiva en su ejemplo), pero eso dio como resultado un StackOverflowError en 'org.eclipse.jetty.server.Dispatcher $ ForwardAttributes.setAttribute (Dispatcher.java:410) '([full trace] (http://pastebin.com/vZEvmDRj)) cuando intenta acceder a'/'- parece que funciona (incluye el encabezado set-cookie con la respuesta) cuando visita un archivo específico. –
No sé si esto es un error de Jetty, o debido a alguna configuración incorrecta o algo más. Una explicación de cómo funciona este manipulador de cosas puede ser útil. (Al intentar depurar el problema, saqué el context-path de nivel superior, no pareció cambiar nada, así que me pregunto si es necesario). –
- 1. Desarrollo web con Jetty & Maven
- 2. Servir archivos desde la carpeta fuera de la aplicación web en Jetty
- 3. Jetty 8.1.1.v20120215 en Eclipse con aplicación web (JSF + Maven)
- 4. No se puede asignar en masa los atributos protegidos: tags_attributes?
- 5. Ejecución de la aplicación web en Jetty y Tomcat
- 6. "ADVERTENCIA: No se puede asignar en masa los atributos protegidos"
- 7. No se puede asignar memoria
- 8. Jetty IOException: Demasiados archivos abiertos
- 9. No se puede asignar en HList
- 10. Sirviendo archivos estáticos con Jetty
- 11. Embedded Jetty y Spring Web MVC
- 12. ¿Se puede ejecutar una aplicación web ASP.NET sin web.config
- 13. ¿Se puede asignar un TypeConverter sin TypeConverterAttribute?
- 14. ¿Puede almacenar en caché los archivos de sonido en una aplicación web de iOS utilizando un manifiesto o almacenamiento web?
- 15. ¿Cómo se puede depurar la aplicación web Java en Netbeans?
- 16. no puede asignar la memoria de archivos en MongoDB
- 17. No se puede crear la aplicación web Java en NetBeans
- 18. RubyODBC No se puede asignar SQLHENV
- 19. ¿Qué se puede lograr en una aplicación móvil nativa que no se puede hacer en una aplicación web HTML5?
- 20. ¿Por qué TeamCity agrega "csproj.teamcity.patch" a los archivos del paquete de la aplicación web?
- 21. no se puede cargar taglib JSTL dentro del servidor Jetty incrustado
- 22. ¿Puede asignar dinámicamente CFBundleDocumentTypes a su aplicación Cocoa?
- 23. ¿Cómo servir archivos JSP usando Jetty?
- 24. POSIX error 12 ("No se puede asignar memoria") al cargar archivos desde un iPhone
- 25. No se pueden asignar en masa los atributos protegidos
- 26. Acelerar el inicio de la aplicación en Jetty
- 27. ¿Se puede mejorar progresivamente una aplicación Backbone.js y rastrearla por los motores de búsqueda?
- 28. Migración de Jetty 6 a Jetty 8
- 29. No se puede obtener una aplicación web para trabajar sin conexión en el iPod
- 30. Aplicación web que se ocupa de los archivos-descarga de descarga
Puede haber algo relacionado con hacer esto en https://github.com/eclipse/jetty.project/blob/master/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ RewriteHandler.java pero no está claro. –