/
CHANGES.txt
140 lines (110 loc) · 7.4 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
-- 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等。