1.Jar包冲突问题
因为weblogic会自带一些spring jersey heibernate等框架的jar包,所以在部署到weblogic时,程序极容易遇到jar包冲突问题。网上一些参考资料大部分都是说遇到jar包冲突时在weblogic.xml文件中作如下配置,优先加载程序lib下的jar包
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
其实这是有误区的,这个设置指的是,是否优选web-info目录下的classes。我的试验结果是,若这里设置为true,就会出现castclass问题。暂且不知道原因,不知道是不是因为classes中没有对应的class造成的。若是想要优先加载自带jar包,其实应该在weblogic-application.xml文件中做另外一个配置:
<weblogic-application>
<prefer-application-packages>
<package-name>org.glassfish.jersey.*</package-name>
</prefer-application-packages>
</weblogic-application>
在这里做对应的设置就可以了。
2.weblogic中文乱码
这个问题真的是很坑,目前为止也不知道具体原因是什么,若是有网友知道,希望给予指点。
具体问题是这样的。程序部署在tomcat中,一切正常,但若是部署在weblogic中,但返回的数据中带有中文时,就会报反序列化错误,包含无效的UTF8字节。
于是对CXF返回的数据进行拦截,发现返回的xml格式数据中,中文就已经是乱码了。搞了好久,毫无头绪。后来机缘巧合,就想换个CXF版本试试,当时我用的版本是3.2.4。后来换成了3.1.11。尼玛,程序一跑,居然正确了。。整个懵逼。不知道到底是配置的原因,还是什么问题。。。。