获得 jaxbcontext 类的新实例。
客户端应用程序必须提供上下文路径,该路径是一个冒号 (':', u003a) 分隔的 java 包名称列表,它包含模式派生类和/或完全限定的 jaxb 注释类。模式派生的代码是通过为每个包生成的 objectfactory.class 在 jaxbcontext 中注册的。程序员注释的 jaxb 映射类在 jaxb.index 资源文件中列出,而不是在上下文路径中列出,列出这些类所采用的格式如下所述。注意,java 包可以包含模式派生类和用户注释 jaxb 类。此外,java 包可能包含必须处理的 jaxb 包注释。(请参阅 jls 第 3 版的第 7.4.1 节“包注释”)。
每个 contextpath 上列出的包都必须满足下面的一个或两个条件,否则将抛出 jaxbexception:
- 必须包含 objectfactory.class
- 必须包含 jaxb.index
jaxb.index 的格式
该文件应该包含换行符分隔的类名称列表。空格、制表符和空行被忽略。注释生成
iis7站长之家是 '#' (0x23);每行上的第一个注释字符后面的所有字符都被忽略。文件必须使用 utf-8 编码。从列出的类中获得的类也可以在 jaxbcontext 中注册,正如 newinstance(class...)
定义的那样。
对 jaxb.index 文件中出现的类名称的限制是:
- 不一定以 ".class" 结尾。
- 类名称与包含 jaxb.index 文件的包相关。只允许使用直接出现在包含 jaxb.index 文件的包中的类。
- 不允许使用完全限定的类名称。只允许与当前包相关的限定类名称指定一个嵌套类或内部类。
为了维护与将 jaxb 1.0 模式绑定到 java 接口/实现的兼容(可通过将模式自定义为 jaxb:globalbindings valueclass="false" 来启用此绑定), jaxb 提供者需要确保上下文路径上的每个包都有一个 jaxb.properties 文件,该文件包含一个 javax.xml.bind.context.factory 属性值,以及解析为相同提供者的所有值。
此要求不适用于 jaxb 注释类。如果 contextpath 上列出的各种包之间存在任何全局 xml 元素名称冲突,则将抛出 jaxbexception。
在相同的上下文路径中混合使用从多个 jaxb 提供者中生成的接口/实现绑定可能导致抛出 jaxbexception。
- 参数:
contextpath
- 包含模式派生类和/或 java 模式(jaxb 注释)映射类的 java 包名称的列表classloader
- 此类加载器将用于定位实现类。
- 返回:
- 新的 jaxbcontext 实例
- 抛出:
jaxbexception
- 如果创建 jaxbcontext 时遇到错误,如下所示:
- 在包中查找 objectfactory.class 或 jaxb.index 失败
- 包含在 contextpath 中的全局元素之间出现混淆
- 查找上下文工厂提供者属性的值失败
- 混合使用相同 contextpath 上的不同提供者的模式派生包