我对 servlet 还很陌生,所以我希望这不是一个明显的问题。因此,我有一个使用模板在 NetBeans 中创建的简单 Java servlet。我在 web.xml 中创建了一个上下文参数,其中列出了允许的主机(我的请求参数之一是一个 URL,我将与此列表进行比较):
<context-param>
<param-name>allowedHosts</param-name>
<param-value>
http://opendap.co-ops.nos.noaa.gov/thredds/wms/NOAA/CBOFS/MODELS/201206/nos.cbofs.fields.nowcast.20120612.t00z.nc?service=WMS&version=1.3.0&request=GetCapabilities
http://www.google.com
http://www.facebook.com
</param-value>
</context-param>
当我只将虚拟 URL 放入 Google 和 Facebook 时,这非常有效。但是,当我添加第一个 URL 时,Tomcat 服务器甚至无法部署。查看我的日志,我在一个很长的堆栈跟踪的顶部看到了这一点:
SEVERE: Parse Fatal Error at line 19 column 146: The reference to entity "version" must end with the ';' delimiter.
org.xml.sax.SAXParseException: The reference to entity "version" must end with the ';' delimiter.
第 19 行第 146 列确实指向我在上下文参数列表中拥有的那个长 URL 的“版本”部分。所以显然“版本”是某种保留词。如果我从这个 URL 中删除“版本”参数,“请求”也是一个问题。
我可以通过http://opendap.co-ops.nos.noaa.gov/thredds/wms/
像 URL 一样来解决这个问题(因为最终我想要一个主机列表而不是特定的 URL),但我想知道要不然怎么做才能解决这个问题......有没有办法包括在 web.xml 中有这样的“保留词”的 URL?
谢谢!