0

当试图在 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()

4

2 回答 2

1

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

于 2009-08-21T13:30:39.570 回答
0

似乎这解决了问题(在此处找到):

第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 中作为共享 libaray 存在(请参阅 Enterprise Manager->Administration-> Shared Libraries。

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

于 2009-08-21T13:52:29.947 回答