Play Framework 2.6で//のパスへアクセスした際にURISyntaxExceptionとなる不具合の対処方法
Play Framework 2.6で、http://localhost:9000//のような//というパスのURLへアクセスした際にURISyntaxExceptionが発生する不具合の対処方法。
具体的には以下のようなログが出力される。
[warn] p.c.s.a.AkkaModelConversion - Failed to parse path; returning empty string.
java.net.URISyntaxException: Expected authority at index 2: //
at java.net.URI$Parser.fail(URI.java:2847)
at java.net.URI$Parser.failExpecting(URI.java:2853)
at java.net.URI$Parser.parseHierarchical(URI.java:3101)
at java.net.URI$Parser.parse(URI.java:3062)
at java.net.URI.<init>(URI.java:588)
at play.core.server.common.PathAndQueryParser$.parse(PathAndQueryParser.scala:36)
at play.core.server.common.PathAndQueryParser$.parsePath(PathAndQueryParser.scala:53)
at play.core.server.akkahttp.AkkaModelConversion$$anon$2.liftedTree1$1(AkkaModelConversion.scala:104)
at play.core.server.akkahttp.AkkaModelConversion$$anon$2.path$lzycompute(AkkaModelConversion.scala:103)
at play.core.server.akkahttp.AkkaModelConversion$$anon$2.path(AkkaModelConversion.scala:102)これはおそらくPlay Framework 2.6のAkkaModelConversionの仕様でありロジックで修正することが難しい。そのためログの設定によりこれらを出力させないようにする。
logback.xmlに
<logger name="play.core.server.akkahttp.AkkaModelConversion" level="ERROR" />を追記すれば良い。