QA@IT

【ApacheCXF】定義していないパスへのアクセスがあった際の処理について

2863 PV

現在ApacheCXF2.6 + SpringでRESTfulサービスの構築を考えています。
http://【domain】:【port】/【context】/に対して以下のコードを作成しました。

「http://【domain】:【port】/【context】/token」にアクセスした場合、UUIDが生成したランダム文字列が取得できます。
しかし、定義されていない「http://【domain】:【port】/【context】/aaaa」などにアクセスされた場合、

WARNINGレベルで、"org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper|_ThreadID=15;_ThreadName=httpSSLWorkerThread-8080-0;_RequestID=87d0b6ec-0ddd-46e8-9d3a-fd732af43b47;|javax.ws.rs.WebApplicationException(後半のスタックトレース省略)"が出力されます。
このログを出力させないようにすることはできますでしょうか?もしくはフィルターのようなものでフックして独自処理を記述することはできませでしょうか?

ご教示頂けますよう、よろしくお願い申し上げます。

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/")
public class HelloWorld {

    @GET
    @Path("/token")
    @Produces("text/plain")
    public String getToken(){
        return UUID.randomUUID().toString();
    }
}
  • @Path("{param}") などのパラメータマッチを利用した別メソッドを用意してもだめですか? -
  • ご回答有り難うございます。
    @Path("/{param}"}を定義したところ、http://~~/aaaaは補足できるのですが、http://~~/aaaa/aaaaは補足できませんでした。可能であるならば、定義した以外のパス全てのアクセスを補足して処理を行いたいと考えております。
    -

回答

http://docs.jboss.org/resteasy/2.0.0.GA/userguide/html_single/#_Path_and_regular_expression_mappings

にあるように、

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/")
public class HelloWorld {

    @GET
    @Path("/token")
    @Produces("text/plain")
    public String getToken(){
        return UUID.randomUUID().toString();
    }

    @GET
    @Path("/{var:.*}")
    public String getSomething(){

    }

}

などとした場合はどうですか?

だめなら
@Path("/{var:.*}/{param}")
とか

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。