发布
社区首页 >问答首页 >为多个Java包指定MOXy运行时

为多个Java包指定MOXy运行时
EN

Stack Overflow用户
提问于 2011-05-03 05:53:39
回答 1查看 1.3K关注 0票数 3

对于分布在多个MOXy包中的域类,有没有办法将jaxb.properties指定为我的JAXB实现,而不是将jaxb.properties放到每个包中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-03 06:54:17

要将EclipseLink MOXy指定为JAXB提供者,您需要在域对象的一个包中放置一个jaxb.properties,即传入的以引导JAXBContext。例如,如果您的JAXBContext将基于以下两个类:

  • example.foo.Foo
  • example.bar.Bar

example.foo.Foo

代码语言:javascript
代码运行次数:0
复制
package example.foo;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

import example.bar.Bar;

@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {

    private Bar bar;

}

example.bar.Bar

代码语言:javascript
代码运行次数:0
复制
package example.bar;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

import example.foo.Foo;

@XmlAccessorType(XmlAccessType.FIELD)
public class Bar {

    private Foo foo;

}

example/foo/jaxb.properties

为了指定应该使用JAXB的MOXy实现,我们将把一个包含以下条目的jaxb.properties文件放在与Foo类相同的包中。

代码语言:javascript
代码运行次数:0
复制
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

演示

由于Foo和Bar类相互引用,最终JAXBContext将包含关于这两个类的元数据,但根据我们创建JAXBContext的方式,提供程序可能会有所不同。

代码语言:javascript
代码运行次数:0
复制
package example;

import javax.xml.bind.JAXBContext;
import example.foo.Foo;
import example.bar.Bar;

public class Demo {

    public static void main(String[] args) throws Exception{
        System.out.println(JAXBContext.newInstance(Foo.class).getClass());
        System.out.println(JAXBContext.newInstance(Bar.class).getClass());
        System.out.println(JAXBContext.newInstance(Foo.class, Bar.class).getClass());
    }

}

运行上面的代码将产生:

代码语言:javascript
代码运行次数:0
复制
class org.eclipse.persistence.jaxb.JAXBContext
class com.sun.xml.bind.v2.runtime.JAXBContextImpl
class org.eclipse.persistence.jaxb.JAXBContext
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5862896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档