Spring MVCにシナリオがあり、handleRequestメソッドで明示的に例外をスローする必要があります。
たとえば
public class AdminController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// for some request parameter this is run. For Eg. reqParam=xyz
undeployTables();
}
public void undeployTables() throws Exception {
throw new Exception("Undeploy Exception");
}
ここで、春のサーブレットとURLのマッピングがweb.xmlで構成されていると仮定して、urlを介してサーブレットにアクセスしようとすると、 http://localhost:8080/server/admin?reqParam=xyz
ページに正しいエラーが表示されます。java.lang.Exception: Undeploy failed....
しかし、HTTPClientを介して、つまりJavaコードを介してコードにアクセスしようとすると、クライアントの応答はこの例外をキャッチできず、応答オブジェクトとしてHTTP401内部エラーが発生するだけです。クライアントのExceptionオブジェクトです。
コードは:
HttpPost httppost = new HttpPost(url.toURI());
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, timeout);
logger.info("executing request " + httppost.getURI()); //$NON-NLS-1$
// Create a response handler
HttpResponse response = httpclient.execute(httppost);// expect exception to be thrown here
statusCode = response.getStatusLine().getStatusCode();
クライアントの例外をキャッチできるように、どこで変更を行う必要があるかを教えてください。
グーグルできましたが、適切な答えを見つけることができませんでした。