动态修改字节码以替换用反射调用get set方法的形式
生活随笔
收集整理的这篇文章主要介绍了
动态修改字节码以替换用反射调用get set方法的形式
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1. 起因
在前两天,为了解决websphere和JDK8上部署的应用发起webservice调用(框架用的cxf)时报错的问题,跟了一些代码,最终发现可以通过加上参数-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true来解决。
2. ClassTailor.noOptimize优化了什么
分析jaxb的代码分析,由于webservice调用要用到xml与bean对象的转换,于是就是用到对bean字段的get set。通常的想法此处用反射便可以完成。但是jaxb在这里用了动态生成字节码的方式直接调用bean的get set方法,以达到节提升性能的目的,本质上就是换了class文件中常量池的UFT8字符串。
具体可以参见com.sun.xml.bind.v2.bytecode.ClassTailor类,com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector 类。
3. 按他的方式做一个demo
总结
以上是生活随笔为你收集整理的动态修改字节码以替换用反射调用get set方法的形式的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【Java EE】Day08 HTML&
- 下一篇: udacity_javascript设计