微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JAX-RS在Liberty上抛出URISyntaxException

如何解决JAX-RS在Liberty上抛出URISyntaxException

我有一个JAX-RS应用程序,可以在Liberty 19.0.0.10上正常工作。我遇到的问题似乎是Liberty运行时中的错误,如果@PathParam具有反斜杠,则会引发URISyntaxException异常。该问题是在安全代码扫描期间发现的。

  1. 我试图通过使用预先匹配的ContainerRequestFilter来解决此问题,但是即使在匹配任何资源之前大概已经处理过,我也看到了相同的异常。
  2. 我尝试使用自定义异常处理程序,但仍然看到相同的错误
  3. 尝试在getinfo函数中捕获异常显然不起作用,因为该错误发生在进入函数本身之前。
  4. 使用@Encoded注释显然没有任何区别。
[ERROR   ] SRVE0777E: Exception thrown by application class 'java.net.URI.create:863'
java.lang.IllegalArgumentException: Illegal character in path at index 80: https://hotsauce/somepath/uuid/a=\dg=bc
        at java.net.URI.create(URI.java:863)
        at com.ibm.ws.jaxrs20.endpoint.AbstractJaxRsWebEndpoint.getBaseURL(AbstractJaxRsWebEndpoint.java:245)
        at [internal classes]
Caused by: java.net.URISyntaxException: Illegal character in path at index 80: https://hotsauce/somepath/uuid/a=\dg=bc
        at java.net.URI$Parser.fail(URI.java:2859)
        at java.net.URI$Parser.checkChars(URI.java:3032)
        at java.net.URI$Parser.parseHierarchical(URI.java:3116)
        at java.net.URI$Parser.parse(URI.java:3064)
        at java.net.URI.<init>(URI.java:599)
        at java.net.URI.create(URI.java:861)
        ... 2 more

[ERROR   ] SRVE0315E: An exception occurred: java.lang.Throwable: java.lang.IllegalArgumentException: Illegal character in path at index 80: https://hotsauce/somepath/uuid/a=\dg=bc
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:5051)
        at [internal classes]
Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 80: https://hotsauce/somepath/uuid/a=\dg=bc
        at java.net.URI.create(URI.java:863)
        at com.ibm.ws.jaxrs20.endpoint.AbstractJaxRsWebEndpoint.getBaseURL(AbstractJaxRsWebEndpoint.java:245)
        ... 1 more
Caused by: java.net.URISyntaxException: Illegal character in path at index 80: https://hotsauce/somepath/uuid/a=\dg=bc
        at java.net.URI$Parser.fail(URI.java:2859)
        at java.net.URI$Parser.checkChars(URI.java:3032)
        at java.net.URI$Parser.parseHierarchical(URI.java:3116)
        at java.net.URI$Parser.parse(URI.java:3064)
        at java.net.URI.<init>(URI.java:599)
        at java.net.URI.create(URI.java:861)
        ... 2 more

这是代码示例

@Path("/somepath")
public class MyClass {
    
    @GET
    @Path("/uuid/{UUID}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getInfo(@PathParam("UUID") String uuid) {
       try {
          // request processing goes here
       } catch (Exception e){
          // URISyntaxException can't be handled here.
       }
    }
}

解决方法

该堆栈出现在19.0.0.10中,但是应该在较新的版本中进行修复-该修复是在19.0.0.11-12时间范围内进行的,因此,如果可以升级到20.0.0.1或更高版本,则应该解决此问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。