JAX-WS - 如何在创建大量xjc java对象时提高性能?

时间:2011-07-27 19:06:10

标签: java xml performance web-services jax-ws

在我的模式中,我定义了一个由一系列其他元素组成的元素。我正在创建一个JAX-WS Web服务,所以我使用xjc从我的模式生成java类。

一旦生成了类,我在我的服务处理程序中有一个循环,它创建了这些生成的类之一的几千个实例,每个实例都有一个getItems()方法,它返回一个List,并为每个添加一些项。

响应XML看起来像这样:

<MyElement>
  <Item name="item1">texthere</Item>
  <Item name="item2">texthere</Item>
  <Item name="item3">texthere</Item>
  <Item name="item4">texthere</Item>
</MyElement>
<MyElement>
  <Item name="item1">texthere</Item>
  <Item name="item2">texthere</Item>
  <Item name="item3">texthere</Item>
  <Item name="item4">texthere</Item>
</MyElement>

这个元素出现了几千次。

我的问题是关于表现:

如何减少生成这些对象并返回XML响应所需的时间?目前,50,000个MyElement实例大约需要40秒。每个MyElement实际上有大约10个Item元素,因此总共有近500,000个对象。我做了一些分析,发现大约10-15秒这是在编组对象期间,15-20秒将它们添加到网络流中。

有没有办法减少内存使用量?为每个MyElement创建所有这些jaxb对象实例以及它们中的每个Item元素都会占用大量内存,还有更好的方法吗?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

1)看看这个blog它可以帮助您解决问题

2)另外,为什么不尝试json,而不是xml