接入的IO类型配置参数com.apusic.net.bio=false 现已废弃不用,改用新的方式:apusic.web.io.type=nio,取值为 bio, nio,方便后续的方式扩展。
修改完善相关jar包的包名,避免和应用引用的包冲突。
日志队列存储改为异步保持,避免阻塞,默认队列长度为2048,可以通过启动脚本增加jvm参数修改队列长度,如-Dapusic.log.blocking.queueSize=10240。
AAS属性参数去掉apusic.disable.webservice属性,增加apusic.webservice.enabled属性,该属性的默认值为false。
apusic.log.blocking.queue属性的默认值为false。
增加AAS属性参数com.apusic.errorPage.hideServerInfo,设置为true时,在现实错误页面信息时,不包含应用服务的版本等信息,默认值为false
原来在Muxer中配置的EnableGZip属性被废除了,新的配置在WebService服务中,如:
<ATTRIBUTE NAME="EnableGZip" VALUE="true"/> <ATTRIBUTE NAME="CompressableMimeTypes" VALUE="text/html,text/xml,text/css"/>
EnableGZip:可选配置,默认值为"false", 合法取值有三种:"true", "false", 或 "2048"。最后一种形式是一个数值,表示一个最小长度的字节数,只有当输出内容大于该长度时,才执行压缩。如果配置为"true",则最小长度默认值为2048个字节。
CompressableMimeTypes:可选配置,默认值为"text/html,text/xml,text/plain,text/css",其取值为逗号分隔的字符串,表示这些类型的内容才会被压缩。
在应用中配置了url-pattern为/的Servlet为应用默认的Servlet,请求资源匹配没有成功的时候,则使用该servlet进行处理。
更新bcprov的实现,支持JDK1.5到JDK1.7,同时避免出现安全漏洞。
默认用户密码策略修改,主要修改为在应用服务器启动时设置密码,并增加了密码复杂度的检查,不符合复杂度的密码不能设置。
如果线程池maxSpareThreads未设置而maxThreads已设置,则把maxSpareThreadsSet设为与maxThreads相等。
添加对HttpSessionIdListener的支持。
根据规范将rtexprvalue默认值设置为true。
增加对类分析的异常捕捉,因为可能有一些第三方的类引用其他的第三方类,客户没有直接使用到,应用没有包含进来,会出现类找不到,导致应用启动失败。
添加应用初始化参数com.apusic.cdi.disabled是否启用CDI的参数设置。
增加vmoption参数apusic.nio.write.buffer.size, 默认为0,用于提高低并发时候应用服务器的性能。
修改了只有admin用户进行jmx链接的功能,现在属于administrators组的用户都可以使用进行jmx连接。如果都不是admin和administrators组的用户,则不能进行连接。
增加memcache客户端超时控制参数以及链接失效恢复检查的时间间隔。配置方法:在CacheSessionStoreService服务中配置OpTimeout、HealSessionInterval、ConnectTimeout属性,单位为秒。
修改注入方法查找,兼容用户在不规范的setter方法上注入的问题,比如setxyz()中属性第一个字母x没有大写的问题。
更改多个应用进行session共享时,必须配置apusic-application.xml中context-root的问题,现在修改为:该配置不是必须,如果没有配置,则使用server.xml配置的name属性。
连接池泄露检测和强制关闭实现
增强了JDBCTracerService的功能,可以对应用中的连接使用情况进行跟踪,超过时间没有释放则会进行提示;同时也提供一种强制关闭的方式,避免连接耗尽,影响应用的正常运行。
<SERVICE CLASS="com.apusic.jdbc.trace.JDBCTracerService"> <ATTRIBUTE NAME="TraceAllow" VALUE="False"/> <ATTRIBUTE NAME="StackTraceAllow" VALUE="False"/> <ATTRIBUTE NAME="checkAbandoned" VALUE="False"/> <ATTRIBUTE NAME="removeAbandoned" VALUE="False"/> <ATTRIBUTE NAME="checkAbandonedTimeout" VALUE="300"/> </SERVICE>
新增参数说明:
checkAbandoned:是否开启检测连接池泄露,值设置为true则表示开启,其默认值为false,而检测的间隔时间和checkAbandonedTimeout属性的时间一致;
checkAbandonedTimeout:连接使用时间超过该值则认为该连接为泄露,单位为秒,默认值为300;
removeAbandoned 是否强制关闭泄露的连接。如果设置为true,则会自动关闭检测为超时的数据库连接;如果设置为false,则会在后台打印警告信息,默认值为false;
修改对HTTP连接是否为keepalive的逻辑。若连接是基于http1.1协议,则只要头属性connection没有指定为close,则表示keepalive;若是http1.0及以下版本,则必须指定为keep-alive,才表示开启keepalive;
将Muxer服务的属性lookAheadTimeout默认值修改为与timeout属性一致,且默认值修改为30秒;
应用类加载时缓存类文件与jar文件的修改时间,优化类加载的性能;
jsessionId的cookie默认设置为httpOnly
增加非http协议对应用服务器的访问控制,如通过jconsole连接的控制。如果开启控制,则需要设置允许访问的ip列表。在Muxer服务中增加如下的属性配置:
<ATTRIBUTE NAME="EnableMuxAllow" VALUE="true"/> <ATTRIBUTE NAME="MuxAllowIPs" VALUE="192.168.106.205"/>
EnableMuxAllow:表示是否开启这个功能,true表示开启,默认值为false;
MuxAllowIPs:设置允许访问的ip地址列表,多个ip以逗号分割,默认本机可以访问。
增加在数据源连接释放时自动提交或回滚的处理,避免一些应用没有正常释放连接导致的连接溢出问题。当数据源配置属性resetAutoCommit为true,同时配置了vm.options文件中参数jdbc.tx.auto.complete.decision的值(值可以为commit或rollback),则会按配置的值执行该处理;
除了可以通过管理控制台修改用户密码方式外,增加通过脚本修改用户密码的功能,详细参考脚本securityadmin的使用说明;
在启动HTTPS协议时,默认过滤不安全的套件。如果需要修改或添加更多的过滤套件,可以通过修改vm.options文件中参数com.apusic.ciphersuite.exclude的值;
日志打印时增加线程号信息的打印;
修改事务完成时释放逻辑连接的逻辑,先断开逻辑连接与物理连接,当逻辑连接被再次使用时,逻辑连接再自动关联物理连接;
在基于HTTPS访问应用时,默认情况下所有的cookie都是secure的。可以通过配置vm.options文件中参数com.apusic.cookie.noSecurity的值改变这个默认的行为,该参数设置为true,则表示cookie不要设置secure;
在开启情况下,可以通过配置vm.options文件中参数com.apusic.cookie.securityExclude指定哪些名称的cookie不需要设置secure;
可以通过统一的参数设置所有的cookie属性httpOnly值true,可以通过配置vm.options文件中参数com.apusic.cookie.httpOnly,如设置为true,则所有的cookie都会是httpOnly;
可以配置禁用HTTP协议访问功能,修改Muxer服务,增加如下属性配置:
<ATTRIBUTE NAME="DisableHttp" VALUE="True"/>
在动态集群管理系统中,增加了证书管理、多版本部署、定时任务管理以及补丁管理等功能;
去掉自带的并发包的实现代码,统一使用JDK默认并发包代码;
增强了SessionService服务对于内存中Session数目超过MaxSessionsInCache时的管理。
删掉了服务原来的ExpireOldestUnusedSessionOnMax参数,增加了SessionCreationPolicyOnMax及BackgroundPolicyOfOverrideOnMax参数。
SessionCreationPolicyOnMax属性说明:
表示当内存中的活动session数目大于MaxSessionsInCache所设定的值时,应用服务器在创建新session时采取何种策略,可选的值为:Override、NotAllow、ExpireOld及SwapOutOld,默认值为SwapOutOld。各取值含义说明如下:
Override:忽略最大限制,继续创建新Session,由后台线程负责清除多余的session,清除多余session的策略,由辅助参数BackgroundPolicyOfOverrideOnMax指定;
NotAllow:不允许超过最大限制,如超过,直接抛异常;
ExpireOld:如超过最大限制,先废弃掉多余的旧session,再创建新的;
SwapOutOld:如超过最大限制,先把内存中多余的旧session交换到持久存储SessionStore中,再创建新的。
BackgroundPolicyOfOverrideOnMax属性说明:
该属性为SessionCreationPolicyOnMax的辅助属性,当SessionCreationPolicyOnMax的取值为Override时,需要设置该属性。其可选的取值为:ExpireOld及SwapOutOld,默认值为SwapOutOld,取值的含义同SessionCreationPolicyOnMax中的解释。