EclipseLink MOXy-如何避免将jaxb.index和jaxb.properties文件保留在模型类包中?

EclipseLink MOXy-如何避免将jaxb.index和jaxb.properties文件保留在模型类包中?,jaxb,eclipselink,moxy,Jaxb,Eclipselink,Moxy,我正在使用EclipseLink外部映射文件将Java对象封送到XML和JSON。因为我的模型类是在不同的项目中定义的,在这些项目中我无权添加/修改任何文件或类 那么,如何避免将jaxb.index和jaxb.properties文件保存在模型类所在的包中呢?JAVA模型 Belos是我将用于此示例的Java模型: Foo 栏 外部映射文件(oxm.xml) 输出 下面是运行演示代码的输出。如您所见,映射元数据已应用 <?xml version="1.0" encoding="UTF-8"

我正在使用EclipseLink外部映射文件将Java对象封送到XML和JSON。因为我的模型类是在不同的项目中定义的,在这些项目中我无权添加/修改任何文件或类


那么,如何避免将jaxb.index和jaxb.properties文件保存在模型类所在的包中呢?

JAVA模型

Belos是我将用于此示例的Java模型:

Foo

外部映射文件(oxm.xml)

输出

下面是运行演示代码的输出。如您所见,映射元数据已应用

<?xml version="1.0" encoding="UTF-8"?>
<FOO>
   <BAR>
      <value>Hello World</value>
   </BAR>
</FOO>

你好,世界

感谢Blaise的回复。我们是否可以使用类路径中的jaxb.properties提供eclipselink jaxbprovider,是否需要将此文件与模型类保存在同一个包中?我可以在您的示例中看到,jaxb.properties存在于foo包中,但Bar使用默认的jaxbContext,但在我的示例中,所有模型类都存在于其他包中(我没有任何控制权)我不想为这些模型类创建任何包装类,也不想在包装类包中保留jaxb.properties。@Navin-使用默认机制,您只需要一个
jaxb.properties
文件。它可以在您正在创建的
JAXBContext
上的任何包中。它不需要包含在所有这些文件中。
package forum11615376;

public class Bar {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}
<?xml version="1.0"?>
<xml-bindings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="forum11615376">
    <java-types>
        <java-type name="Foo">
            <xml-root-element name="FOO"/>
            <java-attributes>
                <xml-element java-attribute="bar" name="BAR"/>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>
package forum11615376;

import java.util.*;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import org.eclipse.persistence.jaxb.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        Map<String, Object> properties = new HashMap<String, Object>(1);
        properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, "forum11615376/oxm.xml");
        JAXBContext jc = JAXBContextFactory.createContext(new Class[] {}, properties);

        Bar bar = new Bar();
        bar.setValue("Hello World");
        Foo foo = new Foo();
        foo.setBar(bar);

        Marshaller marshaller =jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(foo, System.out);
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<FOO>
   <BAR>
      <value>Hello World</value>
   </BAR>
</FOO>