我正在使用第三方应用程序,该应用程序使用restlet.org的库将restful url映射到spring bean。它生成以下模式以匹配一个非常简单的URL:
url pattern - / api / 0 / full / {action} / {paramsJSON}
生成的正则表达式
/api/0/preauthfull/((?:[a-zA-Z\d\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@]|(?:\%[\dABCDEFabcdef][\dABCDEFabcdef]))+)/((?:[a-zA-Z\d\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@]|(?:\%[\dABCDEFabcdef][\dABCDEFabcdef]))+)
一旦模式超过220个字符,它就会失败。有趣的是,这只能在tomcat服务器环境中失败,而不是jetty,即使它们都运行相同的jre。我有点不知道如何纠正这个问题,正则表达式是由restlet动态构建的 -
答案 0 :(得分:1)
您可能遇到线程默认堆栈大小的问题。这是java.util.regex.Pattern的一个已知问题,它是关于太深的递归,从来没有尝试过,说实话,深入了解这个内容的内容,只是尝试增加JVM堆栈大小,如
java -Xss1024k
直到Pattern很开心