EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
<== Date ==> <== Thread ==>

Subject: Display Images on .bob using DBWR
From: Vishnu Patel via Tech-talk <tech-talk at aps.anl.gov>
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Date: Fri, 7 Aug 2026 09:48:37 +0000
Dear Sir,
      I have configured the Phoebus Display Builder Web Runtime(DBWR) to display .bob files through a web browser.
After completing the Tomcat and DBWR configuration, I am able to successfully open and display the .bob panel in the client machine web browser. However, the pictures/symbols used in the .bob file are not displayed.
The browser shows an error while trying to load these image/symbol files. It appears that DBWR is referring to the image files using a local file path on the server, which cannot be accessed by the client browser.
The browser console error is shown below. 
--------------------
Loading 'file:/opt/tomcat/webapps/dbwr/LCPC/CompressorLocal.bob' with {}
dbwr.js?V=1786090605:560 New rule for w147 'background_color'
dbwr.js?V=1786090605:134 Connecting PVs
dbwr.js?V=1786090605:134 Disconnected
pvws.js?V=1786090605:30 Opening ws://10.20.120.45:8080/pvws/pv
pvws.js?V=1786090605:40 Connected to ws://10.20.120.45:8080/pvws/pv
dbwr.js?V=1786090605:134 Initialize Widgets
picture.js?V=1786090605:16 Cannot load picture from file:/opt/tomcat/webapps/dbwr/LCPC/Symbol/VR Steam Trap.png because web browser cannot access files on server.
DisplayBuilderWebRuntime.widget_init_methods.picture @ picture.js?V=1786090605:16
6picture.js?V=1786090605:16 Cannot load picture from file:/opt/tomcat/webapps/dbwr/LCPC/Symbol/Radiological Protection Screw1.png because web browser cannot access files on server.
DisplayBuilderWebRuntime.widget_init_methods.picture @ picture.js?V=1786090605:16
view.jsp?display=file:/opt/tomcat/webapps/dbwr/LCPC/CompressorLocal.bob:1 Not allowed to load local resource: file://opt/tomcat/webapps/dbwr/LCPC/Symbol/VR%20Steam%20Trap.png
---------------


The DBWR/Tomcat logs on the server is 
$tail -f /opt/tomcat/logs/catalina.out

07-Aug-2026 13:46:46.276 INFO [http-nio-8080-exec-3] dbwr.rules.RuleSupport.handleRule PolygonWidget ID w147 rule:
<rule name="Rule" out_exp="false" prop_id="background_color">
<exp bool_exp="pv0==1">
<value>
<color blue="0" green="255" red="0">
</color>
</value>
</exp>
<exp bool_exp="pv0==0">
<value>
<color blue="0" green="85" red="0">
</color>
</value>
</exp>
<pv_name>LCPC_CRYO_COMP_C_RUN</pv_name>
</rule>
.. turned into ..
{
  // Rule 'Rule'
  let rule2 = new WidgetRule('w147', 'background_color', ['LCPC_CRYO_COMP_C_RUN']);
  rule2.eval = function()
  {
    let pv0 = this.value['LCPC_CRYO_COMP_C_RUN'];
    let pvStr0 = this.valueStr['LCPC_CRYO_COMP_C_RUN'];
    if (pv0==1) return '#00FF00';
    if (pv0==0) return '#005500';
    return '#005500';
  }
  rule2.update = set_svg_background_color
}

07-Aug-2026 13:46:46.290 INFO [http-nio-8080-exec-3] dbwr.servlets.DisplayCache.getOrCreate Cache created file:/opt/tomcat/webapps/dbwr/LCPC/CompressorLocal.bob {}: Load time 23ms


$tail -f /opt/tomcat/logs/localhost_access_log*.txt

10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/view.jsp?display=file:/opt/tomcat/webapps/dbwr/LCPC/CompressorLocal.bob HTTP/1.1" 200 6255
10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/widgets/actionbutton.css?V=1786090605 HTTP/1.1" 200 688
10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/css/widgets.css?V=1786090605 HTTP/1.1" 200 2595
10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/widgets/databrowser.css?V=1786090605 HTTP/1.1" 200 140
10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/widgets/boolbutton.css?V=1786090605 HTTP/1.1" 200 101
10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/widgets/tabs.css?V=1786090605 HTTP/1.1" 200 1087
10.20.61.51 - - [07/Aug/2026:13:46:45 +0530] "GET /dbwr/widgets/navtabs.css?V=1786090605 HTTP/1.1" 200 1304
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/tank.css?V=1786090605 HTTP/1.1" 200 250
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/textupdate.css?V=1786090605 HTTP/1.1" 200 127
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/group.css?V=1786090605 HTTP/1.1" 200 130
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/led.css?V=1786090605 HTTP/1.1" 200 161
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/textentry.css?V=1786090605 HTTP/1.1" 200 147
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/combo.css?V=1786090605 HTTP/1.1" 200 35
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /pvws/js/pvws.js?V=1786090605 HTTP/1.1" 200 5486
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/scrollbar.js?V=1786090605 HTTP/1.1" 200 1152
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/js/dbwr.js?V=1786090605 HTTP/1.1" 200 22169
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/clock.js?V=1786090605 HTTP/1.1" 200 901
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/xyplot.js?V=1786090605 HTTP/1.1" 200 6185
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/symbol.js?V=1786090605 HTTP/1.1" 200 1065
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/bytemonitor.js?V=1786090605 HTTP/1.1" 200 1361
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/actionbutton.js?V=1786090605 HTTP/1.1" 200 3596
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/databrowser.js?V=1786090605 HTTP/1.1" 200 6373
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/boolbutton.js?V=1786090605 HTTP/1.1" 200 933
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/navtabs.js?V=1786090605 HTTP/1.1" 200 3356
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/tabs.js?V=1786090605 HTTP/1.1" 200 1783
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/led.js?V=1786090605 HTTP/1.1" 200 2963
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/checkbox.js?V=1786090605 HTTP/1.1" 200 1090
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/radio.js?V=1786090605 HTTP/1.1" 200 2473
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/tank.js?V=1786090605 HTTP/1.1" 200 821
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/textupdate.js?V=1786090605 HTTP/1.1" 200 4970
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/slider.js?V=1786090605 HTTP/1.1" 200 999
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/combo.js?V=1786090605 HTTP/1.1" 200 1779
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/textentry.js?V=1786090605 HTTP/1.1" 200 2940
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/picture.js?V=1786090605 HTTP/1.1" 200 755
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/spinner.js?V=1786090605 HTTP/1.1" 200 484
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/image.js?V=1786090605 HTTP/1.1" 200 18304
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/progressbar.js?V=1786090605 HTTP/1.1" 200 541
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/boolmonitor.js?V=1786090605 HTTP/1.1" 200 829
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/multistatemonitor.js?V=1786090605 HTTP/1.1" 200 258
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/widgets/polyline.js?V=1786090605 HTTP/1.1" 200 209
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /dbwr/screen?display=file%3A%2Fopt%2Ftomcat%2Fwebapps%2Fdbwr%2FLCPC%2FCompressorLocal.bob&macros=%7B%7D&cache=true HTTP/1.1" 200 47376
10.20.61.51 - - [07/Aug/2026:13:46:46 +0530] "GET /pvws/pv HTTP/1.1" 101 -
10.20.1.222 - - [07/Aug/2026:13:59:20 +0530] "GET /pvws/pv HTTP/1.1" 101 -

Could you please advise how this issue can be resolved? Specifically, I would appreciate your guidance on 
How to configure DBWR to access image/symbol file used in the .bob.

Your guidance on the recommended configuration would be highly appreciated.

With regards
Vishnu

Replies:
Re: Display Images on .bob using DBWR Kasemir, Kay via Tech-talk

Navigate by Date:
Prev: Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) Ralph Lange via Tech-talk
Next: PVA Gateway performance with large image arrays lvhh--- via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
Navigate by Thread:
Prev: Re: Support for MKS Microvision2 RGA? Knap, Giles (DLSLtd,RAL,DOD) via Tech-talk
Next: Re: Display Images on .bob using DBWR Kasemir, Kay via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
ANJ, 10 Aug 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·