weblogic默认使用自己的jaxp解析方式,而tomcat下使用apache的jaxp方式,一般在xercesImpl.jar下
解决方式:
1:在WEB-INF\weblogic.xml中增加
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>让weblogic默认使用web应用自己的xml解析方式
2:但是weblogic编译jsp的时候就会找apache的jaxp方式。这样就需要修改CLASSPATH,将我们的jar放在前面
修改startWeblogic.cmd
加入
SET LIB_PATH=XXX\jar
SET LIB_CLASSPATH=%LIB_PATH%\serializer.jar;%LIB_PATH%\xalan.jar;%LIB_PATH%\xercesImpl.jar;%LIB_PATH%\ibatis\xml-apis.jar;%LIB_PATH%\xsltc.jar
SET CLASSPATH=%LIB_CLASSPATH%;%CLASSPATH%
如果是在linux下部署的,则需要修改startWeblogic.sh
另外在weblogic集群环境下字符集为GBK的修改方式:
1:保证linux字符集为zh_CN.GBK
2:重要的是修改weblogic代理web应用下的weblogic.xml,增加
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
如果应用中有ajax,并且默认字符集为GBK,还是需要单独处理。
一般前台将中文参数改为
var a = encodeURI(encodeURI("中文参数"));
后台接收端使用 id = java.net.URLDecoder.decode(id, "UTF-8");进行转码。