WSO2 Application Server (AS) パッケージを通じて WSO2 Carbon 4.2.0 を使用しています。古い、高度にカスタマイズされた Carbon インストール (製品をサポートしなくなり、製品を放棄し、作業を拒否し、Carbon でどのように/何を変更したかについての詳細を私たちに残さなかった会社によって提供された) を置き換える際に、私たちは、古いインスタンスで以前にデプロイされたように、webapps コンテナー内の Web アプリケーションを結合します。carbon.xml の WebContextRoot をデフォルトの "/" から ex: "/stuff" のサブ URL に変更しました。自己回答 SO の質問hereにも詳しく説明されています。ただし、そこに与えられた答えは、OPがWSO2インスタンスを変更したときに実際に遭遇したことについて詳しく説明されていません。
上記の構成をテストしたところ、ユーザーがサーバー上に存在しない Web アドレスにアクセスした場合、URL の形式に応じて次のいずれかになることがわかりました。
- 空白のページにリダイレクトされました。
- 「500 Internal server error」を受け取ります (これは組み込みの Tomcat ではないでしょうか?)。
- Carbon のログイン ページに送られる (セキュリティ上の理由から絶対に望んでいないことです)。また
以下を示す XML ドキュメントを取得します。
<faultString> The service cannot be found for the endpoint reference (EPR) /stuff/services/nonexistantservicename </faultString>
少なくともコンテンツが欠落している場合、ユーザーに標準化された 404 エラー ページが表示されるか、少なくともサーバーから HTTP 404 エラーが送信されることを願っています。サービスの場合、XML エラーは問題なく処理できます。
この問題を回避するための現時点での唯一のオプションは、WSO2 インスタンスの前にプロキシを配置することです。これは、管理および調整する別のレイヤーになり、パフォーマンスが低下する可能性があります。私はプログラマーではなく、DevOps の経験を持つ単なる管理者であることを知っておいてください。Java ソリューションや WSO2 の一部の再コーディングなどでこれを処理する方法がわかりません。コア製品をカスタマイズすると、WSO2 の将来のアップグレードも妨げられます。これは、上記で詳述したように、現在掘り下げようとしているシナリオです。存在しないコンテンツを処理するための内部 WSO2 メカニズムはありませんか? エラーを標準の返信定型文ページにリダイレクトすることはできませんか?