forked from webx/citrus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
415 lines (319 loc) · 24.3 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
-- Changes in 3.0.1
* 改进FormResolver:将空白表单看作invalid,等同于验证失败,当skipIfInvalid=true时,避免执行action。
* 改进WebxFrameworkFilter:添加excludes参数,使它可以快速排除不需要处理的requestURI
<filter>
<filter-name>webx</filter-name>
<filter-class>com.alibaba.citrus.webx.servlet.WebxFrameworkFilter</filter-class>
<init-param>
<param-name>excludes</param-name>
<param-value>/otherservlet, *.jpg</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>webx</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>other</servlet-name>
<url-pattern>/otherservlet/*</url-pattern>
</servlet-mapping>
* 改进CsrfToken,使它的生成算法可以被别的模块所覆盖。
* 改变CsrfToken.getHiddenField()的默认行为 ── 默认生成longLiveToken而不是原来的uniqueToken。
* Bugfix:当fileItem为空时,uploaded-file-validator抛NPE的问题
* Bugfix:当redirect时,不要执行action
* 改变<parser/> request context中利用getBeanByType取得upload service的方式:
由于<request-contexts>和<parser>会在BeanFactoryPostProcessor中初始化,而此时aop post processor还未被创建。
而getBeanByType可能导致某些FactoryBean抢在aop post processor之前被初始化,导致这部分的bean无法被aop拦截。
* 改进<data-resolver>服务获取parameter annotations的方式:
由于aop可能会运行时派生一个新的类,而这个类并没有包含parameter annotations,导致data resolver无法解析该参数。
改进以后,data-resolver会从super class的被覆盖方法中取得annotation。
* Bugfix:解决URIBroker.toString()然后再fork(),intercepters会被重复执行的问题。
* Bugfix:ModuleLoaderService中产生ClassCastException的问题。
* 改进:在ExceptionUtil中增加throwExceptionOrError()和throwRuntimeExceptionOrError()方法(用来解决上一个bug)。
* Bugfix: escape-support对于#define block会多重escape。
* 改进:对于noescape,返回value object,避免调用value.toString(),合后续的handler可以被正确执行。
* 改进:<set-local inputCharsetParam="" outputCharsetParam="" >支持多个参数,用|分隔,例如:"_input_charset|ie"
* 改进:LocaleUtil.isCharsetSupported(null)返回false,而不是异常
* 改进:添加configuration point: rewrite/handlers,将beans:bean的引用改成handlers:handler。
注意:这会引起xml格式的不兼容,但是这个问题可以在应用启动时立刻发现,并且很容易修改。
step1: 引入namespace: xmlns:rewrite-handlers="http://www.alibaba.com/schema/services/request-contexts/rewrite/handlers"
step2: 指定schema location: http://www.alibaba.com/schema/services/request-contexts/rewrite/handlers http://localhost:8080/schema/services-request-contexts-rewrite-handlers.xsd
step3: 将<handlers><beans:bean>改成:<handlers><rewrite-handlers:handler>
* 改进pom使项目可在默认的maven repository下build
* 改进mail service,使之在javamail 1.4.1和1.4.2下有一致的表现。
-- Changes in 3.0.2
* 改进SessionRequestContext,当attributes未改变,并且invalidate未调用时,不提交store,以免产生不必要之cookies。
注意:session store不保证对象的内部属性的改变会被保存到store中,例如,下面的代码不一定可行:
MyObject myObject = session.getAttribute("myObject");
myObject.setValue(value);
// next request of the same session
assertEquals(value, ((MyObject) session.getAttribute("myObject")).getValue()); // 可能不等
* Bugfix: 在解析query参数时,对“Justin%A1%A4Bieber”进行URL unescape时(GBK),得到乱码。
* 改进WebxComponentsContext接口,使开发者有机会继承并设置额外的参数。例如:允许bean definition重复定义。
* Bugfix: 当RequestContext未扩展子接口时,将对RequestContext创建singleton proxy,从而导致注入RequestContext接口时出错。
解决步骤:1. 避免对创建RequestContext接口本身创建singleton proxy
2. 不使用spring本身的ObjectFactory作为proxy的接口,而是创建一个新的接口:ProxyTargetFactory
* Bugfix: 在Servlet 3.0/Tomcat 7.0中,对Cookie.isHttpOnly创建FastClass时出ClassNotFoundException。解决步骤,指定正确的classLoader。
* 改进:添加ExceptionUtil.getStackTraceForHtmlComment()方法,使包含“--”的异常信息可被正确输出HTML comment中。
* 改进:(Servlet|Turbine|)ContentURIBroker.getURI("xxx?a=1&b=2#ref")支持query和ref
* 改进:URIBroker.setServerURI("xxx?a=1&b=2#ref")支持query和ref
* 改进:支持导出control context中的值到调用者。
* 临时导出:$controlTool.export("var1", "var2", ...)
* 导出全部(不推荐,默认为false):<control-tool exportAll="true" />
* 改进:支持在模板中指定layout:$rundata.setLayout(xxx)
* 改进:使error pipeline中可以取得应用context中的对象(但是不包括pull tools)。
* 删除过期的ExceptionRecoveryValve
* Bugfix: 当<input type=file>字段存在,但未上传文件时,ValueListSupport.getFileItems()不能取得正确的结果。
-- Changes in 3.0.3
* 改进: new LocaleInfo(locale, charset)时,即使charset为非法的,也不报错。把判断charset合法性的任务交给LocaleUtil.isCharsetSupported()方法。
(但在setDefault和setContext时会判断charset的合法性)
这样改进避免了setLocaleRequestContext中出现UnsupportedCharsetException异常。
* 相关改进:添加方法:LocaleInfo.isCharsetSupported(), assertCharsetSupported()。
* 改进:修改TurbineRunDataInternal接口,将get/setContextForControl的功能和push/popContext合并,简化了control中创建context的逻辑。
注意:应用不应该依赖于TurbineRunDataInternal接口,如果依赖了,并用到了修改的方法,有可能受影响。
* 改进:添加了ControlParameters接口,它可以通过参数注入到control module类中。Control通过它可以修改或取消template。
* 改进:添加了@ContextValue注解,可以通过参数直接注入Context中的值,或传递给control的参数。
* 改进:添加VisitorInvocationErrorHandler接口,使templatelite可以选择抛出visitor的异常,或者由visitor来自己处理异常。
* 改进并bugfix:让TextWriter实现VisitorInvocationError,默认显示root cause异常并记录日志,但不抛出错误。
注解:由于request attributes中存在turbine rundata proxy的引用,而在detailed error环境中不存在rundata,因此导致显示detailed error页面时出错。
然而这种错误完全是无谓的,重要的是显示应用的异常。此改进使detailed error页面不会因为visitor的失败而失败。
* 改进:简化StaticFunctionDelegatorBuilder所生成对象的toString方法,使之更易读;
* 改进:添加ExceptionUtil.getRootCause()方法。
-- Changes in 3.0.4
* bugfix: 把/index重写(rewrite)成/index.htm时,变成了/index/.htm。
* 改进:让form service和uris service支持import,这样,就可以把form.xml和uris.xml分割成多个文件,便于管理。
需要注意,由于有多个form和uris实例存在,所以需要指定primary参数,否则注入会出错。
<form id="common" />
<form primary="true">
<import form="common" />
</form>
<uris id="common" />
<uris primary="true">
<import uris="common" />
</uris>
* 改进TemplateLite工具,并将它从internal包开发到common-util中,可供外部使用。
* 新增explorer开发工具,在开发模式下,可以:
× 列出所有context中的spring beans,以帮助开发者了解schema所生成的beans结构。
× 查看resource loading服务中资源。
× 查看uri brokers。
× 查看pull tools。
* 改进:resourceLoadingService.trace()时,如果成功的话,能够取得resource对象。
* 改进:pullService,可以取得tool-set的信息,以方便explorer查看。
* 改进:允许application context中出现重复定义的bean,合并重复定义的bean definition的内容。这样做的目的是为了可以覆盖bean的默认配置。
* 改进:支持从classpath*:中查找webx子应用的配置文件。例如:
<webx-configuration>
<components componentConfigurationLocationPattern="classpath*:META-INF/mycomponent/*.xml" />
</webx-configuration>
* 改进:如果指定了-DskipValidation启动参数,则跳过schema验证,以加快启动速度。请勿在生产环境使用这个功能。
-- Changes in 3.0.5
* Bugfix: CsrfToken.getLongLiveToken在集群机器上产生不一致的结果。
* 改进:当指定-DskipValidation时,beans定义中的参数可取得正确的默认值,例如:default-autowire,default-dependency-check等。
-- Changes in 3.0.6
* 改进:让webx同时支持spring2/3。
(修改了一处代码,使resource loading机制可在spring3下运行;修改了若干单元测试,使它们在spring3下可以通过测试。)
虽然webx仍以spring 2.5.6.SEC02编译,但只需要将项目的pom.xml中的spring依赖改成3.0.6.RELEASE就可以工作。
如希望以spring3来编译webx,只需要指定参数:mvn ... -Pspring3 即可。这样编译所生成的citrus-webx-all包将依赖于spring 3。
注意:spring3和spring2的代码是不完全兼容的。在spring2上编译的代码,未必能直接在spring3上运行,反之亦然。
下面的命令确保webx同时兼容于spring的两个版本。
mvn clean install -- 在spring2中编译并测试
mvn surefire:test -Pspring3 -- 在spring3中测试但不编译
* 在开发者首页中显示webx版本、spring版本;改进取得webx版本的方法,使用META-INF/MANIFEST.MF中的信息。
* 安全改进:为dev mode下的explorer添加安全控制。默认只能从本机访问。当从非授权的主机访问时,显示友好的提示信息。支持下面的property:
-DdevelopmentMode.allowedHosts=192.168.1.*
* 改进:增加MDC: %X{productionMode},在日志中自动显示当前的生产模式或开发模式。
* 新增功能:将webx当作filter使用,filter chain的下游可以使用webx所提供的request contexts功能。配置方法如下(WEB-INF/web.xml):
<filter>
<filter-name>webx</filter-name>
<filter-class>com.alibaba.citrus.webx.servlet.WebxFrameworkFilter</filter-class>
<init-param>
<param-name>excludes</param-name>
<param-value>*.html</param-value><!-- 让servlet引擎来处理静态页面 -->
</init-param>
<init-param>
<param-name>passthru</param-name>
<param-value>/myservlet/*, *.xxx</param-value><!-- 将以上url转给servlet处理,但在servlet中可用request contexts。 -->
</init-param>
</filter>
<servlet-mapping>
<servlet-name>...</servlet-name>
<url-pattern>/myservlet/*</url-pattern>
<url-pattern>*.xxx</url-pattern>
</servlet-mapping>
* 改进:当uribroker.toString()时,不执行interceptors,确保intercepters总在render时被调用,而不会因为某些情况(如输出日志时)被调用。
解决了如下问题:原来pull service在初始化时会调用uribroker.toString(),从而调用interceptors。但此时调用interceptors可能会得到不正确的结果。
* 修改URI broker service中requestAware的默认值,原来是true,现在改为false。
* 当requestAware为true时,所生成的URL会自动加上当前request的server信息。这个在绝大多数情况下是不需要的。故修改之。
* 将原petstore示例中的页面验证组件PageAuthorizationService和PageAuthorizationValve移植到turbine中。
* 新增pull tool:<context-exposer>可将context中的bean直接暴露到pull tools中,供模板使用。
* 增加对于spring-test的支持。
* 增加测试工具:SpringextContextLoader和ServletTestContainer,使用方法参见citrus-test-webx单元测试。
* 改进:将读取action参数的任务由performAction valve移到analyzeURL valve,从而使其它的valve也能通过rundata取得action参数。例如安全检验的valve。
* 注意:很少有应用程序会去修改action参数。但如果有人这样做了,在新的实现下,代码可能会失效。
* 改进:rundata.setRedirectTarget()以后,自动清除action,避免执行action。
* 改进:JspService支持jspx后缀。
* 将util.internal.regex.*和util.internal.ToStringBuilder等内部类升级至非internal类,以方便其它应用使用。
* bugfix: ClassLoaderUtil.getResources(name)中的小问题。
* bugfix:InheritableListableBeanFactory.registerResolvableDependency()只阻止对parent context中已注册的ProxyTargetFactory对象的覆盖,
使ResourceLoader和ApplicationContext等对象的注入方式仍然和spring原来相同。
* 确保在java7下面可以编译并测试通过。
-- Changes in 3.0.7
* 删除citrus-springext-all-in-one项目。
* 修改项目的名称:
citrus-webx-all-in-one -> citrus-webx-all
citrus-test-all-in-one -> citrus-test-all
所有依赖这两个包的应用需要修改一下pom.xml。
* 改进pom.xml,以便发布到central maven repository中:
* 添加javadocs
* 修改pom参数
* 升级jexl到2.0.1,使之支持可变参数,例如:$messageUtil.formatMessage(format, args...)
-- Changes in 3.0.8
* 添加方法:navigator.redirectTo(name).withParameter(..).end(); 通过end()方法可以明确结束语句,并发出重定向请求。
* 所有源码改用UTF-8,符合多数开发环境的默认配置。
* 改进pom,在开发时使用较高版本的java,发布时使用保守的Java 1.5。
* 改进form/velocity service测试,使之可以在非(locale=CHINA, charset=GBK)的情况下测试通过。
* bugfix: number-validator设置限定范围以后,当用户输入非法数字时,validator抛出异常。
* 改进form,对于field.getKey(),同时支持压缩格式(_fm.g._0.f)和非压缩格式(_fm.group._0.field),大小写不敏感。这样可以方便测试。
如果<form fieldKeyFormat="uncompressed">参数被明确指定,那么所有输出的字段名全为非压缩的,并且不支持压缩格式。
* 删除暂时没用的asm/codegen子模块,并将少量依赖到的类移到generictype子模块中。
* SetLocaleRequestContext中增加功能:可根据request uri,自动设置与默认值不同的input/output charset
<set-locale>
<override uri="*.json" inputCharset="UTF-8" outputCharset="UTF-8" />
</set-locale>
* bugfix: WebxFrameworkFilter中使用excludes排除.css,.js以后,在开发模式下直接访问webx的开发模式首页时出现页面混乱,因为internal里面的css和js也被过滤掉了。
* bugfix: ScriptModuleFactory搜索到*.class时会报错。
* 改进异常处理:当使用pipeline-exception.xml来处理异常时(生产模式),可以指定:
1. 日志名称(loggerName和defaultLoggerName);
2. 日志的详略(logging和defaultLogging,可选值detailed, brief, disabled)。
<services:pipeline xmlns="http://www.alibaba.com/schema/services/pipeline/valves">
<handleException defaultPage="error.vm"
defaultLogging="detailed"
defaultLoggerName="my.logger">
<on-exception type="com.alibaba.citrus.service.template.TemplateNotFoundException"
statusCode="404"
logging="brief" />
<on-exception type="com.alibaba.citrus.service.moduleloader.ModuleNotFoundException"
statusCode="404"
logging="brief"
loggerName="my.logger2" />
</handleException>
</services:pipeline>
-- Changes in 3.0.9
* 升级依赖的jar包:
slf4j 1.6.6
logback 1.0.6
log4j 1.2.17
junit 4.10
rhino-js 1.7R2
nekohtml 1.9.6.2
xerces 2.10.0
easymock 3.1
jasper 6.0.35
jexl 2.1.1
velocity 1.7
freemarker 2.3.19
commons-fileupload 1.2.2
commons-io 2.3
commons-codec 1.6
groovy 1.8.6
cglib 2.2.2
xml-apis 1.4.01
* Bugfix: WebxFrameworkFilter中的excludes/passthru参数、SetLocaleRequestContext的overrider中,错误地使用了requestURI。
正确的方式应该是requestURI除去contextPath,因为应用配置不应该依赖于contextPath。
!!注意:现有的web应用如果不是默认web应用(即contextPath非空),并且web.xml中对WebxFrameworkFilter配置了excludes/passthru参数的,
必须修改参数,使之不包含contextPath。
* 改进:WebxFrameworkFilter中的excludes/passthru参数,如果pattern以!开始,代表排除。
例如:excludes=*.jpg, !/upload/*.jpg,意味着除了/upload目录下的以外,所有的jpg图片都将从servlet容器中装载,而不是从webx框架中装载。
* 改进:由于freemarker升级以后已经支持slf4j,所以删除FreemarkerEngine中的Slf4jLoggerFactory,以及不太稳定的LoggerHack类。
* Bugfix: 移植的hessian无法运行于resin服务器。
* 添加一种新的module adapter: <screen-event-adapter />,从而支持如下情形:
当target=/xxx/yyy/zzz.htm时,调用screen.xxx.Yyy中的doZzz()方法。
原来的方式仍然支持。
* 为form-tool添加参数,使之可以指定formService的实例:<form-tool formServiceRef="xxx" />
* 改进<performScreen>以及screen module,使screen可以返回一个值给pipeline。此举是为了简化screen创建json的请求。
添加了一个可选的配置参数:<performScreen resultName="screenResult" />,若不配置该参数,则"screenResult"就是默认值。
当screen.execute()或screen.doEvent()返回一个值的时候,这个值被记录在pipelineContext中,
其它valve可以通过pipelineContext.getAttribute("screenResult")来取得该值。
* Bugfix: 对于ClassNameWildcard和PathNameWildcard,当pattern以?开头或结束的时候,错误地匹配了多个字符(?的意思是有且仅有一个字符)
* 新增<renderResultAsJson /> valve,用来将screen所返回的对象转换成json并输出到response。
-- Changes in 3.0.10
* Bugfix: 多值field中存在null空值的时候,<all-of-values>验证器不能正确取得null值,导致验证结果错误。
* 升级servlet api到3.0.1。
* 添加动态生成类的工具InterfaceImplementorBuilder,用来解决如下问题:
有些测试代码需要实现ServletContext接口,但是由于servlet3和2版本对于该接口的API不同,导致无法用一套代码同时兼容servlet3和2。用动态生成类工具就可以解决这个问题。
* 在开发模式页面中显示Servlet版本号。
* 改进request context服务,使之在async模式被启动时,不会提交response。当async线程重新取得控制时,可以重新取得原来的request context。
* 改进<renderTemplate> valve,当buffering关闭时,只不过不显示layout,而不会报错。
* 添加<setBuffering enabled="true|false" /> valve,可以在pipeline中开关buffering,以简化screen代码。
* 添加异步执行功能,以下为pipeline片段:
<performScreen/>
<performRunnableAsync>
<setLoggingContext />
<doPerformRunnable />
</performRunnableAsync>
当screen返回runnable或callable对象时,就会启动异步操作。runnable或callable将在另一个线程中被执行。
* 将webx编译所需的spring版本升级为3.0.7.RELEASE,否则异步功能不能正常编译。然而该版本的webx仍然支持在spring 2.5.6.SEC02中执行,只要不使用异步功能即可。
* 修改了参数名称,使含义更明确:
<performScreen output="result" />
<renderResultAsJson input="result" />
* 为RequestContext增加了commitHeaders功能,这样,当buffering关掉时,确保headers能正常输出到浏览器。
* 新增了TwoPhaseCommitRequestContext接口,如有request context希望在headers提交时被调用,可从此接口派生。
* 改进如下RequestContext实现,使之从TwoPhaseCommitRequestContext派生:
* BasicRequestContext
* LazyCommitRequestContext
* SessionRequestContext
* 修改了RequestContextLifecycleInterceptor接口,添加了commitHeaders()方法。如有应用实现了这个接口,需要更改代码并重新编译。
* 改进了CookieStore,确保cookie能在response被提交前写入。
* 改进schema exporter servlet(由mvn springext:run来运行),
当访问http://localhost:8080/时,自动重定向到http://localhost:8080/schema,以方便开发者。
* 改进Springext以配合IDEA/Eclipse plugins。
* 调整接口,使之不仅可从ClassLoader中装载资源,也可从由IDE plugins所实现的ResourceResolver接口来装载。
* 改进了装载schema的过程,引进Transformer接口,不仅使代码更清晰,也提高了效率。
* 增加方法:ConfigurationPoint.getDependingContributions(),可以取得所有引用此configuration point的contributions。
* 为ConfigurationPoint/Contribution/Schema/SpringPluggableSchema 增添了SourceInfo接口,以便取得原始资源文件,供IDE来编译。
* 为Contribution添加了getAnnotation()方法,可以取得schema中的文档信息。
* Bugfix: Form验证中,<uploaded-file-validator extension="jpg,gif" />不能验证JPG/GIF大写后缀。
* Bugfix:当response.reset()时,LazyCommitRequestContext应清除所有的状态。
* Bugfix: <renderResultAsJson> valve,当redirect发生时,仍然执行渲染的问题。
* 改进Navigator接口,添加了forwardTo(target, action, actionEvent)方法,使之可内部重定向到指定action。
* Bugfix: 当requestContext初始化失败时,错误处理程序报NPE的问题。
* 升级到springext-maven-plugin:1.1
-- Changes in 3.0.11
* 升级到springext-maven-plugin 1.2
* 删除intellij:annotations依赖,因为还不能全面使用这个机制,不如先删除。
* 将velocity/freemarker的依赖改成scope=provided。应用程序如果需要的话,必须明确声明依赖它们。
* 当SLF4J没有绑定日志系统时(即classpath中不存在诸如logback-classic或slf4j-log4j12包),避免配置出错。
这个修改可使autoconfig运行于maven 3.1.x中。因为在maven 3.1.x里,SLF4J被提到上层classloader中,从而找不到logback包而报错。
* Bugfix: 修正如下问题:在<resource-loading>服务中,两个连续的<super-loader>中的第二个无法工作,例如:
<resource pattern="/*/templates/layout">
<res-loaders:super-loader name="/webroot/$1/templates/layout" />
<res-loaders:super-loader name="/webroot/common/templates/layout" />
</resource>
* Bugfix: 修正当request.startAsync以后,每个请求都会生成cglib类,从而导致permgen溢出的问题。
* 升级依赖包的版本:
slf4j 1.6.6 -> 1.7.5
commons-fileupload 1.2.2 -> 1.3
commons-io 2.3 -> 2.4
commons-codec 1.6 -> 1.8
fastjson 1.1.23 -> 1.1.36
logback 1.0.6 -> 1.0.13 [provided]
commons-logging 1.1.1 -> 1.1.3 [provided]
servlet 3.0.1 -> 3.1.0 [provided]
javamail 1.4.1 -> 1.4.7 [provided]
activation 1.1 -> 1.1.1 [provided]
freemarker 2.3.19 -> 2.3.20 [provided]
groovy 1.8.6 -> 2.1.7 [runtime]
httpunit 1.7 -> 1.7.2 [test]
xerces 2.10.0 -> 2.11.0 [test]
easymock 3.1 -> 3.2 [test]
jasper 6.0.35 -> 6.0.37 [test]
mock-javamail 1.7 -> 1.9 [test]
-- Changes in 3.0.12
* Bugfix: 在servlet2.5环境中,Servlet3Util初始化失败。
-- Changes in 3.0.13
* Bugfix: MatchResultSubstitution,当出现很长的变量$xxxxxxxx...时,发生溢出错误,导致<rewrite>功能出错。
* Bugfix: 在<rewrite><condition test="%{VAR}">中,避免%{VAR}中出现的$或%被解析。
* 改进:使EntityResolver支持../xxx/yyy.xsd这样的相对路径。Apache CXF用到了这样的URL,此改进确保CXF可以在webx平台上运行。
-- Changes in 3.0.14
* 升级commons-fileupload,避免DOS攻击的问题。
参见:http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%[email protected]%3E
* 修正SessionStore.invalidate()方法的拼写错误,然而请注意,这会导致新版本和老版本的不兼容。