- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
通过使用 XJC,我创建了 2 个不同的 JAXB 元数据包,每个包中都有一个 ObjectFactory 类(我不知道这种方法是否可行,我有 2 个不同的 XSD 需要处理)
建议每个操作只创建一个 JAXBContext,因为它的成本很高。所以我想知道我在这里做的事情是否有效和良好的做法?
JAXBContext jaxbContext = JAXBContext.newInstance("com.package.one");
Unmarshaller jaxbUnmarshaller1 = jaxbContext.createUnmarshaller();
JAXBContext jaxbContext2 = JAXBContext.newInstance("com.package.two");
Unmarshaller jaxbUnmarshaller2 = jaxbContext2.createUnmarshaller();
编辑 当我尝试一起初始化 2 个包时,出现异常“元素名称 {}Value 有多个映射。”值是两个包中的一个类。
JAXBContext jaxbContext = JAXBContext.newInstance("com.package.one:com.package.two");
最佳答案
来自 JAXBContext 的 Javadoc:
A client application normally obtains new instances of this class using one of thesetwo styles for newInstance methods, although there are other specialized forms of themethod available:JAXBContext.newInstance( "com.acme.foo:com.acme.bar" )The JAXBContext instance is initialized from a list of colon separated Java packagenames. Each java package contains JAXB mapped classes, schema-derived classes and/oruser annotated classes. Additionally, the java package may contain JAXB package annotationsthat must be processed. (see JLS 3rd Edition, Section 7.4.1. Package Annotations).JAXBContext.newInstance( com.acme.foo.Foo.class )The JAXBContext instance is intialized with class(es) passed as parameter(s) andclasses that are statically reachable from these class(es). See newInstance(Class...)for details.
You can use a shared context and initialize it with a list of package names.
Code Example:
package test.jaxb.one;
@XMLRootElement
@XMLType(name = "test.jaxb.one.SimpleObject")
@XMLAccessorType(XMLAccessType.FIELD)
public class SimpleObject implements Serializable {
private static final long serialVersionUID = 54536613717262557148L;
@XmlElement(name = "Name")
private String name;
// Constructor, Setters/Getters
}
还有这个:
package test.jaxb.two;
@XMLRootElement
@XMLType(name = "test.jaxb.two.SimpleObject")
@XMLAccessorType(XMLAccessType.FIELD)
public class SimpleObject implements Serializable {
private static final long serialVersionUID = -4073071224211934153L;
@XmlElement(name = "Name")
private String name;
// Constructor, Setters/Getters
}
最后:
public class JAXBTest {
@Test
public void testContextLoad() throws Exception {
final JAXBContext context = JAXBContext
.newInstance("test.jaxb.one:test.jaxb.two");
Assert.assertNotNull(context);
}
}
关于java - 多个 JAXBContext 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399567/
我正在将我们的团队从 JAXB 1.x 迁移到 JAXB 2.1,它是 JAVA1.6 (rt.jar) 的一部分。一切都进行得很顺利,直到它在运行时开始提示。 这是导致问题的代码行。 String
在我的 java 项目中,我有一个用一些类生成的 jar。我能够实例化我的 jar 中的类的实例: Alert a = new Alert(); 但是我尝试这样做: JAXBContext conte
我想问一个关于 @UsesJAXBContext的问题 jax-ws 中的注解。我试图让它在客户端工作,但我可能遗漏了一些东西。这是我的案例: 我有网络服务操作: @WebMethod(operati
我在使用 JAXB 时遇到了一个奇怪的问题。我已经使用 xjc 从我的 XSD 生成我的 java 类,一切看起来都不错。如果我使用 schemagen,它会生成一个与我的原始 xsd 相匹配的正确模
有没有什么方法可以加快 javax.xml.bind.JAXBContexts 的初始化以及大量(>1000)类的初始化?在我们的 XML 繁重的应用程序中,启动时间大约为 10 分钟,主要包括 JA
这个程序: import foo.bar.baz.ClassSpecificallyIncluded; import javax.xml.bind.JAXBContext; public clas
我使用MarshallingMessageConverter作为MessageConverter bean的实现。我使用 Jaxb2Marshaller 作为 org.springframework.
这个问题已经有答案了: JAXBContext and @XmlRootElement cause error (1 个回答) 已关闭 4 年前。 我有一个 POJO(Kotlin 中),我想将其更改
我们在 Mule 适配器中面临一个与 JAXB 上下文相关的问题,需要对此提出一些意见我们正在使用 xpath 来评估适配器中选择 block 中的一些表达式,如下所示, ....
我对 JAXB 的这两个方面感到困惑。 据我了解,当将冒号分隔的包名称作为上下文路径传递到 newInstance 时JAXBContext 的方法,JAXB 会将这些包下的所有类添加到其作用域中,以
我正在尝试像这样初始化 JAXBContext: JAXBContext jaxbContext = JAXBContext.newInstance("ebay.apis.eblbasecompone
我有关于将 XML 转换为 Java 对象的问题,在这里我使用 JAXB。 就我而言: XML 数据: Aris Tonar XML 数据
我知道 JAXBContext 应该只创建一次,因为它非常昂贵,但我很好奇是否最好为所有必需的类创建一个上下文, JAXBContext newInstance(Class... classesToB
通过使用 XJC,我创建了 2 个不同的 JAXB 元数据包,每个包中都有一个 ObjectFactory 类(我不知道这种方法是否可行,我有 2 个不同的 XSD 需要处理) 建议每个操作只创建一个
在最近的系统测试部署之后,我们的一个 servlet 受到的打击比平时严重得多,我们注意到内存开始攀升,而 weblogic 最终会死掉。我的实习生,我很自豪,发现了内存泄漏的根源。 无论何时收到请求
我正在 JAXBContext 类中试验各种形式的 newInstance 方法(我使用的是 Oracle JDK 1.7 附带的默认 Sun JAXB 实现)。 我不清楚何时可以将具体类与 Obje
jaxb.properties需要在与域类 相同的包您正在创建 JAXBContext。 我正在使用 Moxy 的 xml 驱动配置,因为我不想使用注释或 XJC 生成的对象。我有一个现有的域类,它们
我需要为特定的 XmlAdapter 安装 DefaultValidationEventHandler。从我读过的内容来看,你只能这样做: JAXBContext context = JAXBCont
在创建用于解码的 JAXBContext 实例时出现空指针异常。下面的行位于一个函数内,每次我上传需要解码的 XML 时都会调用该函数。 JAXBContext jc = JAXBContext.ne
请阐明 JAXBContext 配置。鉴于: 客户库 com.mycompany.user01234 包含多个JAXB 注解的类 所有类都是位于同一个包中的简单 POJO 类由 @XmlType 注释
我是一名优秀的程序员,十分优秀!