NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Re: [thredds] THREDDS 5.6 WMS Servlet Error: NullPointerException on newSettings Field

  • To: Ernie Joynt - NOAA Affiliate <ernie.joynt@xxxxxxxx>
  • Subject: Re: [thredds] THREDDS 5.6 WMS Servlet Error: NullPointerException on newSettings Field
  • From: Evan Magri - NOAA Affiliate <evan.magri@xxxxxxxx>
  • Date: Wed, 9 Apr 2025 12:55:59 -0400
Hey Sean,

I've attached the wmsConfig.xml

Regards,

Evan Magri, IT/Computer Specialist II, Systems Administrator
Contractor - Team Alpha Omega for NCEI Data Stewardship
NOAA's National Centers for Environmental Information (NCEI)
NCEI Data Stewardship Division/Data Access Branch
151 Patton Avenue, Asheville, NC 28801 (E/NE54)
E-mail: evan.magri@xxxxxxxx
Google Voice: (828) 271-4019‬


On Wed, Apr 9, 2025 at 12:42 PM Ernie Joynt - NOAA Affiliate <
ernie.joynt@xxxxxxxx> wrote:

> From tomcat log
>
> 9-Apr-2025 15:12:20.094 SEVERE [ajp-nio-140.172.190.31-8009-exec-17]
> org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for
> servlet [wms] in context with path [/thredds##5.6] threw exception
>
>         java.io.IOException: java.lang.NullPointerException: Cannot read
> field "allowFeatureInfo" because "newSettings" is null
>
>                 at
> uk.ac.rdg.resc.edal.wms.WmsServlet.doGet(WmsServlet.java:338)
>
>                 at
> jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
>
>                 at
> jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>
>                 at
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>
>                 at
> org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
>
>                 at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
>
>                 at
> thredds.servlet.filter.RequestBracketingLogMessageFilter.doFilter(RequestBracketingLogMessageFilter.java:50)
>
>                 at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
>
>                 at
> thredds.servlet.filter.RequestQueryFilter.doFilter(RequestQueryFilter.java:90)
>
>                 at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
>
>                 at
> thredds.servlet.filter.HttpHeadFilter.doFilter(HttpHeadFilter.java:47)
>
>                 at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
>
>                 at
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
>
>                 at
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
>
>                 at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
>
>                 at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>
>                 at
> org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:70)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
>
>                 at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>
>                 at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
>
>                 at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
>
>                 at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
>
>                 at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
>
>                 at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
>
>                 at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
>
>                 at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
>
>                 at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
>
>                 at
> org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:431)
>
>                 at
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
>
>                 at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
>
>                 at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
>
>                 at
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
>
>                 at
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
>
>                 at
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>
>                 at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
>
>                 at java.base/java.lang.Thread.run(Thread.java:840)
>
>         Caused by: java.lang.NullPointerException: Cannot read field
> "allowFeatureInfo" because "newSettings" is null
>
>                 at
> thredds.server.wms.config.LayerSettings.replaceNullValues(LayerSettings.java:215)
>
>                 at
> thredds.server.wms.config.WmsDetailedConfig.getSettings(WmsDetailedConfig.java:200)
>
>                 at
> thredds.server.wms.TdsEnhancedVariableMetadata.<init>(TdsEnhancedVariableMetadata.java:45)
>
>                 at
> thredds.server.wms.ThreddsWmsCatalogue.getLayerMetadata(ThreddsWmsCatalogue.java:423)
>
>                 at
> uk.ac.rdg.resc.edal.wms.util.WmsUtils.getLayerMetadata(WmsUtils.java:285)
>
>                 at
> uk.ac.rdg.resc.edal.wms.GetMapStyleParams.<init>(GetMapStyleParams.java:182)
>
>                 at
> uk.ac.rdg.resc.edal.wms.GetMapParameters.<init>(GetMapParameters.java:97)
>
>                 at
> uk.ac.rdg.resc.edal.wms.WmsServlet.getMap(WmsServlet.java:410)
>
>                 at
> uk.ac.rdg.resc.edal.wms.WmsServlet.dispatchWmsRequest(WmsServlet.java:365)
>
>                 at
> thredds.server.wms.ThreddsWmsServlet.dispatchWmsRequest(ThreddsWmsServlet.java:127)
>
>                 at
> uk.ac.rdg.resc.edal.wms.WmsServlet.doGet(WmsServlet.java:300)
>
>                 ... 41 more
>
>
>
> From threddsServlet.2025-04-09-15.log
>
>
> 2025-04-09T15:12:20.094 +0000 [  97647680][   35059] INFO  -
> threddsServlet - Remote host: 205.193.114.245 - Request: "GET
> /thredds/wms/regional/
> british_columbia_3_msl_2013.nc?LAYERS=Band1&ELEVATION=0&TIME=2022-08-05T13%3A22%3A27Z&TRANSPARENT=true&STYLES=boxfill%2Frainbow&COLORSCALERANGE=-500%2C0&NUMCOLORBANDS=20&LOGSCALE=false&SERVICE=WMS&VERSION=1.1&service=WMS&request=GetMap&layers=Band1&styles=&format=image%2Fpng&transparent=true&version=1.3.0&width=256&height=256&crs=EPSG%3A3857&bbox=-14010601.536559667,6261721.357121641,-13971465.778077658,6300857.115603653
> HTTP/1.1"
>
> 2025-04-09T15:12:20.094 +0000 [  97647680][   35059] ERROR -
> uk.ac.rdg.resc.edal.wms.WmsServlet - Problem with GET request
>
> java.lang.NullPointerException: Cannot read field "allowFeatureInfo"
> because "newSettings" is null
>
>         at
> thredds.server.wms.config.LayerSettings.replaceNullValues(LayerSettings.java:215)
> ~[classes/:5.6]
>
>         at
> thredds.server.wms.config.WmsDetailedConfig.getSettings(WmsDetailedConfig.java:200)
> ~[classes/:5.6]
>
>         at
> thredds.server.wms.TdsEnhancedVariableMetadata.<init>(TdsEnhancedVariableMetadata.java:45)
> ~[classes/:5.6]
>
>         at
> thredds.server.wms.ThreddsWmsCatalogue.getLayerMetadata(ThreddsWmsCatalogue.java:423)
> ~[classes/:5.6]
>
>         at
> uk.ac.rdg.resc.edal.wms.util.WmsUtils.getLayerMetadata(WmsUtils.java:285)
> ~[edal-wms-1.5.3.0.jar:?]
>
>         at
> uk.ac.rdg.resc.edal.wms.GetMapStyleParams.<init>(GetMapStyleParams.java:182)
> ~[edal-wms-1.5.3.0.jar:?]
>
>         at
> uk.ac.rdg.resc.edal.wms.GetMapParameters.<init>(GetMapParameters.java:97)
> ~[edal-wms-1.5.3.0.jar:?]
>
>         at uk.ac.rdg.resc.edal.wms.WmsServlet.getMap(WmsServlet.java:410)
> ~[edal-wms-1.5.3.0.jar:?]
>
>         at
> uk.ac.rdg.resc.edal.wms.WmsServlet.dispatchWmsRequest(WmsServlet.java:365)
> ~[edal-wms-1.5.3.0.jar:?]
>
>         at
> thredds.server.wms.ThreddsWmsServlet.dispatchWmsRequest(ThreddsWmsServlet.java:127)
> ~[classes/:5.6]
>
>         at uk.ac.rdg.resc.edal.wms.WmsServlet.doGet(WmsServlet.java:300)
> ~[edal-wms-1.5.3.0.jar:?]
>
>         at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
> ~[servlet-api.jar:6.0]
>
>         at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
> ~[servlet-api.jar:6.0]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
> ~[catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
> ~[catalina.jar:10.1.34]
>
>         at
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
> ~[tomcat-websocket.jar:10.1.34]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
> ~[catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
> ~[catalina.jar:10.1.34]
>
>         at
> org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
> ~[spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
> [spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> thredds.servlet.filter.RequestBracketingLogMessageFilter.doFilter(RequestBracketingLogMessageFilter.java:50)
> [classes/:5.6]
>
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
> [spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> thredds.servlet.filter.RequestQueryFilter.doFilter(RequestQueryFilter.java:90)
> [classes/:5.6]
>
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
> [spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> thredds.servlet.filter.HttpHeadFilter.doFilter(HttpHeadFilter.java:47)
> [classes/:5.6]
>
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
> [spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
> [spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
> [spring-security-web-6.3.4.jar:6.3.4]
>
>         at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
> [spring-web-6.1.14.jar:6.1.14]
>
>         at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
> [spring-web-6.1.14.jar:6.1.14]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:70)
> [log4j-jakarta-web-2.23.1.jar:2.23.1]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
> [catalina.jar:10.1.34]
>
>         at
> org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:431)
> [tomcat-coyote.jar:10.1.34]
>
>         at
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
> [tomcat-coyote.jar:10.1.34]
>
>         at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
> [tomcat-coyote.jar:10.1.34]
>
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
> [tomcat-coyote.jar:10.1.34]
>
>         at
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
> [tomcat-coyote.jar:10.1.34]
>
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
> [tomcat-util.jar:10.1.34]
>
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
> [tomcat-util.jar:10.1.34]
>
>         at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
> [tomcat-util.jar:10.1.34]
>
>         at java.lang.Thread.run(Thread.java:840) [?:?]
>
>
> On Apr 9, 2025, at 10:24 AM, Sean Arms <sarms@xxxxxxxx> wrote:
>
> Greetings Evan!
>
> This is the first time I've seen this particular error, but I see at least
> one spot in the code that might end up with a null value for the
> newSettings object. Do you see any errors in the TDS logs with more details
> (threddsServlet logs), perhaps with a stacktrace? Could I also get a copy
> of your wmsConfig.xml file (${tds.content.root.path}/thredds/wmsConfig.xml)?
>
> Cheers!
>
> Sean
>
>
> On Wed, Apr 9, 2025 at 9:33 AM Evan Magri - NOAA Affiliate <
> evan.magri@xxxxxxxx> wrote:
>
>> Good morning,
>>
>> I'm encountering a persistent error in our THREDDS 5.6 deployment. The
>> servlet is throwing a NullPointerException, and the WMS functionality is
>> not working as expected.
>>
>> Here's the relevant error from the Tomcat logs:
>> 03-Apr-2025 16:34:19.346 SEVERE [ajp-nio-140.172.190.31-8009-exec-22]
>> org.apache.catalina.core.StandardWrapperValve.invoke
>> Servlet.service() for servlet [wms] in context with path [/thredds##5.6]
>> threw exception
>>     java.io.IOException: java.lang.NullPointerException: Cannot read
>> field "allowFeatureInfo" because "newSettings" is null
>>
>> Could you please provide guidance on what might be causing the
>> newSettings object to be null in this case?
>>
>> Thank you for your help, and please let me know if you need additional
>> configuration details or logs.
>>
>> Regards,
>>
>> Evan Magri, IT/Computer Specialist II, Systems Administrator
>> Contractor - Team Alpha Omega for NCEI Data Stewardship
>> NOAA's National Centers for Environmental Information (NCEI)
>> NCEI Data Stewardship Division/Data Access Branch
>> 151 Patton Avenue, Asheville, NC 28801 (E/NE54)
>> E-mail: evan.magri@xxxxxxxx
>> Google Voice: (828) 271-4019‬
>> _______________________________________________
>> NOTE: All exchanges posted to Unidata maintained email lists are
>> recorded in the Unidata inquiry tracking system and made publicly
>> available through the web.  Users who post to any of the lists we
>> maintain are reminded to remove any personal information that they
>> do not want to be made public.
>>
>>
>> thredds mailing list
>> thredds@xxxxxxxxxxxxxxxx
>> For list information or to unsubscribe,  visit:
>> https://www.unidata.ucar.edu/mailing_lists/
>>
>
> ----
> Ernest H. Joynt, III
> System Administrator
> Contractor – Team Alpha Omega
> NOAA's National Centers for Environmental Information (NCEI)
> NCEI Mission Support Division / IT Operations Branch
> 325 Broadway E/NE71
> Boulder, CO 80305
>
> E: ernie.joynt@xxxxxxxx
> V: 720.446.9152
>
>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wmsConfig SYSTEM 
"http://www.unidata.ucar.edu/schemas/thredds/dtd/ncwms/wmsConfig_2_0.dtd";>
<!--
Detailed configuration of the WMS service.  This config file can be used to
set default styling parameters for each dataset/variable, and to enable or 
disable
the GetFeatureInfo operation.

See 
http://www.resc.reading.ac.uk/trac/myocean-tools/wiki/WmsDetailedConfiguration
for more information.
-->
<wmsConfig>
    <global>
        <!-- These settings apply to all datasets unless overridden below -->

        <defaults>
            <!-- The global defaults. All elements are mandatory -->
            <allowFeatureInfo>true</allowFeatureInfo>
            <defaultColorScaleRange>-50 50</defaultColorScaleRange>
            <defaultPaletteName>rainbow</defaultPaletteName>
            <defaultNumColorBands>20</defaultNumColorBands>
            <logScaling>false</logScaling>
            <intervalTime>false</intervalTime>
        </defaults>

        <standardNames>
            <!-- Use this section to set defaults per standard name -->
            <!-- Units must come from the UDUNITS vocabulary -->
            <standardName name="sea_water_potential_temperature" units="K">
                <defaultColorScaleRange>268 308</defaultColorScaleRange>
            </standardName>
            <standardName name="sea_water_temperature" units="K">
                <defaultColorScaleRange>268 308</defaultColorScaleRange>
            </standardName>
            <standardName name="mass_concentration_of_chlorophyll_in_sea_water" 
units="kg m-3">
                <logScaling>true</logScaling>
            </standardName>
            <!-- TODO: how about allowing "*fraction" to map to 0:1? -->
            <!-- TODO: how about allowing multiple standard names to map to the 
same settings,
                 either through a glob expression or through a list? -->
        </standardNames>
    </global>

    <overrides>
        
        <datasetPath pathSpec="testAll/*eta_211.nc">
            <!-- Will apply to all paths that match the path spec above -->
            <pathDefaults>
                <!-- These will apply to all variables in this path unless 
overridden below -->
                <allowFeatureInfo>false</allowFeatureInfo>
                <defaultPaletteName>occam</defaultPaletteName>
            </pathDefaults>

            <variables>
                <!-- Configure variables individually according to their 
internal ID.
                     This is the most specific setting and will override any 
others -->
                <variable id="Z_sfc">
                    <defaultColorScaleRange>10 20</defaultColorScaleRange>
                </variable>
            </variables>
        </datasetPath>
        
    </overrides>

</wmsConfig>
  • 2025 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the thredds archives: