如何在weblogic 12.1.3中指定JAXBContext实现

时间:2015-07-17 15:24:52

标签: xml jaxb weblogic

我使用JAXB在java中创建了一个MDB来解析xml内容。 这个MDB在10.3.4 weblogic服务器上工作了很长时间(大约3年)。

现在我要在weblogic 12.1.3服务器上迁移它,由于我还不知道的原因,weblogic选择的实现与我想要的不一样。但我无法弄清楚如何设置它。

现在我的代码初始化代码是这样的:

private JAXBContext getJAXBContext() throws JAXBException {
    if (v1JaxbContext == null) {
       v1JaxbContext = JAXBContext.newInstance(MyClass.class);
    }
    System.out.println("jaxbContext : "+v1JaxbContext.getClass().getName());
    return v1JaxbContext;
}

MyClass.java由JAXB从XSD生成。

在我的eclipse上,输出是 com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl

在我的weblogic方面,输出是 org.eclipse.persistence.jaxb.JAXBContext

2 个答案:

答案 0 :(得分:3)

当我通过EAR使用我的代码时,我不得不放下这些代码:

<wls:prefer-application-resources>
    <resource-name>META-INF/services/javax.xml.bind.JAXBContext</resource-name>
</wls:prefer-application-resources>  

在我的EAR services / javax.xml.bind.JAXBContex 的META-INF目录中创建该文件,该目录仅包含,并且可以正常工作

com.sun.xml.bind.v2.ContextFactory

答案 1 :(得分:1)

我遇到了同样的问题并制定了类似的解决方案,不需要创建新文件:

# -*- coding: utf-8 -*- import sqlite3 conn = sqlite3.connect('storage/container.db') c = conn.cursor() c.execute("SELECT * FROM reports") for row in c.fetchall(): for names in row: print names