Sam,

On 3/11/24 13:04, Sam wrote:
On the server side, I'm checking that file exists before returning the file
path to the browser. We are also dynamically creating pdf files this way
and no issues with accessing them.

How are you checking to see if the file exists? It's possible that your check-for-existance triggers the "not found" in Tomcat's <Resources> instance, then you create your file on-disk and return the path to the browser, then the browser requests the path and gets the cached "not found".

I found something interesting:
https://tomcat.apache.org/tomcat-9.0-doc/config/resources.html From this
link:
*Resources are cached by default.*

I'll try with *Cache-Control* request header and see if it helps!

This isn't likey to be the problem. I think the cache you are fighting is the one Tomcat maintains for "resources" which is how Tomcat loads things from ... well, everywhere. Not caching things like "not found" makes things go very slowly.

-chris

On Mon, Mar 11, 2024 at 11:46 AM Mark Thomas <ma...@apache.org> wrote:

On 11/03/2024 11:31, Sam wrote:
Thanks for replying!!

Yes audio files are generated dynamically from DB.in a Servlet.

I've verified that audio file exists on file system before returning the
html code that contains audo control.

Is there any chance of an attempt to access the file before it is
created? The resources implementation can cache "not found" results for
a short period of time.

You might want to test the code with a simple text file to determine
whether file type is a factor (which seems unlikely but you never know).

Mark



On Mon, Mar 11, 2024, 5:22 a.m. Mark Thomas <ma...@apache.org> wrote:

On 11/03/2024 02:21, Sam wrote:
I just upgraded a legacy application from Tomcat 7 to Tomcat 9. It's
deployed as a war file. I'm facing a weird issue with audio files
playback.

When loading a page that contains an audio file. First time Tomcat
returns
404 error but if reloading the page, audio file is loaded properly and
no
error from Tomcat.

I'm using html 5 audio control to display the file.

All other static resources(images, css and js files) are working
without
any issues. Only audio files are having this issue.

I enabled the logs for DefaultServlet in Tomcat. Follwong is the log
entry
when I try to open the audio file first time. I can see 404 being
returned
from server in Chrome dev tools.


*09-Mar-2024 20:12:50.747 INFO DefaultServlet.serveResource: Serving
resource '/wav/2B916004DFE94FA40446429E1671C893_0001053.mp3' headers
and
data*
Following is the log for 2nd attempt. This time audio is available and
playable in browser. *09-Mar-2024 20:13:00.371 INFO
DefaultServlet.serveResource: Serving resource
'/wav/2B916004DFE94FA40446429E1671C893_0001053.mp3' headers and data *
*09-Mar-2024 20:13:01.372 INFO DefaultServlet.serveFile:
contentType='audio/mpeg'*

Are the audio files generated dynamically on request?

Mark



Here is the audio control code:

<div id="audioContainer" style="height:65px; width:100%;
visibility:visible; ">
      <div id="jobAudio" style="height:45px; width: 100%; left:0px;
bottom:0;"

         <audio controls controlsList="nodownload" style="width: 100%;"

           <source
src="/wav/2B916004DFE94FA40446429E1671C893_0001053.mp3"
type="audio/mpeg" >
         </audio>
      </div>
</div>
I've tried relative path and full path but result is the same in both
cases.

I've spent days trying to solve this but no luck :(

I would really appreciate any guidance to solve this issue.

Thanks!


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to