Thanks for explanation and example, we will use gzip now. Later when Pax 
Web 8 will be ready I will try it again.

best regards

jakub

On Wednesday, April 22, 2020 at 11:42:20 AM UTC+2, Grzegorz Grzybek wrote:
>
> Hello
>
> I checked your scenario and indeed, you're right - it's not working. But 
> why?
>
> The problem is - if you DON'T add a "default" servlet mapped to "/", it's 
> NOT org.eclipse.jetty.servlet.DefaultServlet that is added by pax-web-jetty 
> (and only this org.eclipse.jetty.servlet.DefaultServlet handles this fancy 
> "precompressed" option which seems reall y cool).
> It's org.ops4j.pax.web.service.jetty.internal.ResourceServlet that is 
> added.
>
> Why? Because Jetty's default servlet serves "welcome files" Only after 
> detecting that request URL "is a directory" - but it's not that easy to 
> state this when running in OSGi. PaxWeb's jetty.internal.ResourceServlet 
> has special "resource manager" that handles such cases (and properly 
> delegates to "welcome files" when detecting "a directory"), but it doesn't 
> handle "precompressed" init param.
>
> Even direct request to http://localhost:8181/war-bundle/index.html (which 
> doesn't rely on welcome files) doesn't work, because Jetty's 
> DefaultServlet's doesn't use proper 
> org.eclipse.jetty.server.handler.ContextHandler#_baseResource "root 
> directory" in this call:
>
> "qtp326128611-165@9223" prio=5 tid=0xa5 nid=NA runnable
>   java.lang.Thread.State: RUNNABLE
>  at org.eclipse.jetty.server.handler.*ContextHandler.getResource*
> (ContextHandler.java:1806)
>  at org.eclipse.jetty.servlet.*DefaultServlet.getResource*
> (DefaultServlet.java:428)
>  at 
> org.eclipse.jetty.server.ResourceContentFactory.getContent(ResourceContentFactory.java:59)
>  at 
> org.eclipse.jetty.server.ResourceService.doGet(ResourceService.java:235)
>  at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:454)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> ...
>
> You can check https://ops4j1.jira.com/browse/PAXWEB-1189 and see how I've 
> configured GZIP compression at GzipHandler level.
>
> BTW, In Pax Web 8, I'm trying to better handle such cases related to 
> redirects, "/" mapping, "default" servlets and unified resource management 
> across Jetty/Undertow/Tomcat servers.
>
> regards
> Grzegorz Grzybek
>
> śr., 22 kwi 2020 o 10:45 Jakub Herkel <[email protected] <javascript:>> 
> napisał(a):
>
>> I would like to ask if someone knows how to configure default servlet or 
>> replace it? I use karaf 4.3.0 RC1 with PAX Web 7.2.14 (pax-http-jetty)
>>  
>> We have angular app with very simple web.xml 
>>  
>>   <welcome-file-list>   
>>     <welcome-file>index.html</welcome-file>   
>>   </welcome-file-list>     
>>   <display-name>chronos</display-name> 
>>  
>> It works but now we would like to add support for static compression (i.e 
>> index.html also will have indext.html.br and index.html.gz). Jetty has a 
>> support for this via "precompressed" init param. 
>> But I don't know how to apply this init param for default servlet. I have 
>> tried to replace default servlet in my web.xml: 
>>  
>> <servlet> 
>>     <servlet-name>test</servlet-name> 
>>     
>> <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 
>>     <display-name>test</display-name> 
>>     <init-param> 
>>       <param-name>precompressed</param-name> 
>>       <param-value>br=.br,gzip=.gz</param-value> 
>>     </init-param> 
>>     <init-param> 
>>       <param-name>dirAllowed</param-name> 
>>       <param-value>false</param-value> 
>>     </init-param>     
>>     <load-on-startup>0</load-on-startup> 
>>   </servlet> 
>>  
>>   <servlet-mapping>  
>>     <servlet-name>test</servlet-name>  
>>     <url-pattern>/</url-pattern>  
>>   </servlet-mapping> 
>>  
>> I can see my servlet via http-list command : 
>> ID  │ Servlet             │ Servlet-Name               │ State       │ 
>> Alias │ Url 
>> ────┼─────────────────────┼────────────────────────────┼─────────────┼───────┼─────────────────────────────────────────────────────────────────────────────
>>  
>>
>> 147 │ CXFNonSpringServlet │ cxf-osgi-transport-servlet │ Deployed    │ 
>> /cxf  │ [/cxf/*] 
>> 329 │ ResourceServlet     │ default                    │ Deployed    │ 
>> //    │ [//] 
>> 329 │ JspServletWrapper   │ jsp                        │ Deployed    
>> │       │ [//*.jsp, //*.jspx, //*.jspf, //*.xsp, //*.JSP, //*.JSPX, 
>> //*.JSPF, //*.XSP] 
>> 329 │                     │ test                       │ Deployed    
>> │       │ [//] 
>>  
>> but when I tried http://localhost:8181 I got  
>>  
>> URI:    / 
>> STATUS:    404 
>> MESSAGE:    Not Found 
>> SERVLET:    test 
>> Powered by Jetty:// 9.4.22.v20191022 
>>  
>> I guess that there is something wrong with loading of resources. I also 
>> tried set resourceBase to / but without success. Could anybody show me the 
>> way how to set it up?
>>
>> best regards
>>
>> jakub
>>
>> -- 
>> -- 
>> ------------------
>> OPS4J - http://www.ops4j.org - [email protected] <javascript:>
>>
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "OPS4J" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ops4j/3ad2e518-f61c-4c74-af71-b66bce1bd2c5%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ops4j/3ad2e518-f61c-4c74-af71-b66bce1bd2c5%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
-- 
------------------
OPS4J - http://www.ops4j.org - [email protected]

--- 
You received this message because you are subscribed to the Google Groups 
"OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ops4j/a4fe3202-ce68-4c66-9d48-11aec2294680%40googlegroups.com.

Reply via email to