【发布时间】:2016-01-22 05:51:18
【问题描述】:
我正在使用 Spring 来设置 Restlet 应用程序,并且我有一点需要 URL 是递归的。即,
/something/filter/x/y/filter/a/b/foo
模式大约是:
/something(/filter/{p}/{q})*/foo
因此,URL 中可以有无限数量的过滤器片段。
在 Spring XML 中它看起来像这样:
<bean id="router" class="org.restlet.ext.spring.SpringRouter">
<constructor-arg ref="parentRouter" />
<property name="attachments">
<map>
<entry key="/filter/{filterAttribute}/{filterValue}" value-ref="filterExtractor" />
<entry key="">
<bean class="org.restlet.ext.spring.SpringFinder">
<lookup-method name="create" bean="dataResource" />
</bean>
</entry>
</map>
</property>
</bean>
<bean id="extractor" class="ca.uhnresearch.pughlab.tracker.extractor.FilterExtractor">
<property name="next" ref="router"/>
</bean>
所以这开始了,但是当应用程序启动时我在org.restlet.util.WrapperList.iterator 中遇到堆栈溢出,所以看起来递归路由器/提取器初始化正在破坏 Restlet 初始化过程。
两个问题,因此:
- Restlet 是否允许递归路由? (文档似乎没有涉及到这一点)
- 实现递归 URL 路由的最佳方式是什么?
【问题讨论】: