帮助在 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 jdbc 模板在 java 中创建新的数据库连接
在 Oracle SQL Developer 中创建新数据库和新连接
在Jupyter Notebook中创建新笔记本时出错[权限被拒绝]