私はサーブレットにかなり慣れていないので、これが明白な質問でないことを願っています。したがって、テンプレートを使用して NetBeans で作成した単純な Java サーブレットがあります。許可されたホストをリストする web.xml で作成したコンテキスト パラメータがあります (リクエスト パラメータの 1 つは、このリストと比較する 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>
Google や Facebook のようにダミーの URL だけを入れると、これは完全に機能します。ただし、最初の 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 から「バージョン」パラメータを削除すると、「リクエスト」も問題になります。
URLと同じように行うことでこれを回避できhttp://opendap.co-ops.nos.noaa.gov/thredds/wms/
ます(最終的には特定のURLではなくホストのリストが必要なため)が、そうでなければこれを回避するために何をしなければならないのか疑問に思っていました...含める方法はありますかweb.xml にそのような「予約語」を含む URL はありますか?
ありがとう!