帮助在 Oracle 企业管理器中创建新的 JAXB 实例

Posted

技术标签:

【中文标题】帮助在 Oracle 企业管理器中创建新的 JAXB 实例【英文标题】:Help with creating a new JAXB instance in Oracle enterprise manager 【发布时间】:2010-11-21 16:01:57 【问题描述】:

尝试在 servlet 中创建新的 JAXB 实例时,我收到一个 JAXBException 提示找不到 jaxb.properties。我一直在尝试通过调用 JAXBContext.newInstance() 显式传递类加载器,但我无法弄清楚。

这里是类加载器:

servlet classloader:    oc4j:10.1.3  
servlet parent classloader:     api:1.4.0  
this classloader:   RestTest.web.ExampleWebApp:0.0.0  
this classloader parent: RestTest.root:0.0.0   

JAXB 生成的类位于不同的包中,因此我的 servlet 位于包“com.xyz.ws”中,而 JAXB 类位于包“com.abc.123”中。我正在使用 `

从 servlet 创建新的 JAXB 实例
JAXBContext.newInstance("com.abc.123", servletClassLoader)

(我也尝试过使用this.getClass().getClassLoader()

【问题讨论】:

【参考方案1】:

这似乎解决了问题(找到here):

步骤 1:将 JAXB2.0 jar 复制到 D:\dev\oc4j10.1.3.0.0\j2ee\home\applib(D:\dev\oc4j10.1.3.0.0 是我的 oc4j 安装位置) (j2ee\home\applib 这个目录是所有项目(部署的应用程序)的公共库文件的占位符 添加的文件是 jaxb-api-2.0.jar、jaxb-impl-2.0.jar、jsr173_api-1.0.jar(JAXB2.0 jars 可以在http://jaxb.java.net/找到)

Step2:通过企业管理器(WebBrowser)部署应用程序时,更改部署计划。

2.1 您可以在部署的最后一步(屏幕)上更改部署计划,方法是单击“编辑部署计划”按钮。

2.2 单击按钮应用程序特定属性会显示。选择链接importedLibraries(编辑importedLibraries)然后点击编辑删除链接输入名称oracle.xml然后点击继续完成部署。

错误的原因是 xml.jar (JAXB 1.0),它作为共享库存在于变量名 oracle.xml 中(请参阅企业管理器->管理->共享库。

我们从上述步骤中实现的是为我们的应用程序删除默认(旧版本的 JAXB)并强制 OC4J 读取更新的 JAXB2.0 实现(jar)

【讨论】:

【参考方案2】:

com.abc.123 包中有 jaxb.properties 文件吗? JAXB 需要一个来构建上下文。

【讨论】:

我使用的是 JAXB 2.1(在 /WEB-INF/lib 文件夹中),它不应该需要 jaxb.properties,但可能 oc4j 库正在使用 JAXB 1.0 并且存在冲突。我得调查一下。

以上是关于帮助在 Oracle 企业管理器中创建新的 JAXB 实例的主要内容,如果未能解决你的问题,请参考以下文章

如何在 oracle 中创建新模式并列出所有模式名称

使用 oracle jdbc 模板在 java 中创建新的数据库连接

在 Oracle SQL Developer 中创建新数据库和新连接

在Jupyter Notebook中创建新笔记本时出错[权限被拒绝]

无法在 Azure 中创建新的管理组 - New-AzManagementGroup

在 shell 中创建新的管理员 webmin 用户 [关闭]