Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 410 lines (315 sloc) 24.588 kb
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
-- 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平台上运行。
Something went wrong with that request. Please try again.