首页 > 解决方案 > 使用 ipv6 URL 访问应用程序时出现数字格式指针异常

问题描述

我使用 Java 和 Spring MVC(版本 4.2.1.RELEASE)制作了一个简单的应用程序,并希望通过 Internet 访问它。但不幸的是,我的互联网提供商(Jio Fiber)不允许在 ipv4 网络上进行端口转发。所以我遇到的一个解决方案是使用 ipv6 地址来访问 localhost,因为 ISP 允许这样做。

我遵循了解决方案并使用 ipv6 地址成功访问了我的本地主机。但是,一旦我进行服务器调用(例如,从数据库中获取列表),我就会得到一个 java.lang.NumberFormatException 异常。堆栈跟踪如下:

SEVERE: Servlet.service() for servlet [spring] in context with path [/AgencyAccounting] threw exception [Request processing failed; nested exception is java.lang.NumberFormatException: For input string: "<>"] with root cause
java.lang.NumberFormatException: For input string: "201:8008:78e4:61a4:8a21:6b6c:a853]:8080"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at org.springframework.web.util.UriComponentsBuilder.fromOriginHeader(UriComponentsBuilder.java:353)
    at org.springframework.web.util.WebUtils.isSameOrigin(WebUtils.java:812)
    at org.springframework.web.cors.DefaultCorsProcessor.processRequest(DefaultCorsProcessor.java:71)
    at org.springframework.web.servlet.handler.AbstractHandlerMapping$CorsInterceptor.preHandle(AbstractHandlerMapping.java:503)
    at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:134)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:954)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

任何有关我需要进行哪些更改以避免此错误的帮助将不胜感激。

如果问题格式错误,请原谅我,这是我在这里的第一个问题!

标签: javaspring-mvcipv6

解决方案


如果您遇到类似的问题,使用最新的 spring 版本为我解决了这个问题。


推荐阅读