小编Sva*_*.Mu的帖子

在jboss中使用jaxb发生了"重复类定义错误"

我在jboss 5.0.1GA容器中使用jaxb,并在启动时看到一个奇怪的异常.它只出现一次.

从堆栈跟踪中,您可以看到它是在FrameworkUtil类的类初始化期间.

FrameworkUtil第119行看起来像这样:

JAXBContext j = JAXBContext.newInstance(Validate.class, Response.class ....<more classes>);
Run Code Online (Sandbox Code Playgroud)

Validate.java中有这个:

@XmlRootElement(name="validate")
public class Validate {

    List<String> userGroups;

    @XmlElementWrapper(name="userGroups")
    @XmlElement(name="item")
    public String[] getUserGroups() {

        if (userGroups != null) {
            return userGroups.toArray(new String[userGroups.size()]);
        }
        else return null;
    }

    public void setUserGroups(String[] userGrps) {
        userGroups = new ArrayList<String>();

        if (userGrps != null) {
            for (String userGrp : userGrps) {
                userGroups.add(new String(userGrp));
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在堆栈跟踪中是一个引用Validate.但有时堆栈跟踪是不同的,而是指代相同的字段(userGroups)Response.class.

这是堆栈跟踪:

Mar 19, 2015 11:20:50 AM com.sun.xml.bind.v2.runtime.reflect.opt.Injector inject
WARNING: …
Run Code Online (Sandbox Code Playgroud)

java xml jboss jaxb jboss5.x

8
推荐指数
1
解决办法
1855
查看次数

垃圾收集器与集合

我已经阅读了几篇关于Java中垃圾收集的帖子,但我还是无法决定是否明确地清除一个集合被认为是一种好的做法......而且由于我找不到明确的答案,我决定在这里问一下.

考虑这个例子:

List<String> list = new LinkedList<>();
// here we use the list, perhaps adding hundreds of items in it...
// ...and now the work is done, the list is not needed anymore
list.clear();
list = null;
Run Code Online (Sandbox Code Playgroud)

从我在eg LinkedList或者的实现中看到的HashSet,该clear()方法基本上只循环给定集合中的所有项目,设置其所有元素(如果LinkedList还引用了next和previous元素)null

如果我做对了,设置listnull只删除一个引用list- 考虑到它是唯一的引用,垃圾收集器最终会处理它.我只是不知道在这种情况下,在垃圾收集器处理列表的元素之前还需要多长时间.

所以我的问题是 - 上面列出的示例代码的最后两行实际上是否有助于垃圾收集器更有效地工作(即更早地收集列表的元素),或者我只是让我的应用程序忙于"无关的任务"?

java garbage-collection

4
推荐指数
1
解决办法
182
查看次数

标签 统计

java ×2

garbage-collection ×1

jaxb ×1

jboss ×1

jboss5.x ×1

xml ×1