2012-12-10 20 views
0

我正在与第三方应用程序一起工作,该应用程序使用restlet.org的库将restful url映射到spring bean,它生成以下模式以匹配非常简单的url:StackoverflowError for Pattern.match与在restlet引擎中的长字符串

URL模式 -/API/0 /全/ {行动}/{paramsJSON}

生成正则表达式模式

/api/0/preauthfull/((?:[a-zA-Z\d\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@]|(?:\%[\dABCDEFabcdef][\dABCDEFabcdef]))+)/((?:[a-zA-Z\d\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@]|(?:\%[\dABCDEFabcdef][\dABCDEFabcdef]))+) 

它只要图案220在围绕字符失败有趣的是,这只在tomcat服务器环境中失败,没有即使他们都在运行同一个jre。我有点不知所措,正则表达式是由restlet动态构建的 -

+0

只是为了澄清:它会失败,较长的输入或者它失败,多头格局? – nhahtdh

+0

失败,长输入 – chrismarx

回答

1

您可能会遇到线程默认堆栈大小的问题。这是java.util.regex.Pattern的一个已知问题,它是关于太深的递归,从来没有尝试过,说实话,要深入了解这件事情里面发生了什么,只是尝试增加JVM堆栈大小,如

java -Xss1024k 

直到模式是幸福

+0

甜蜜的做到了 - – chrismarx