1

我正在尝试cayenneAxis2服务中使用(编译为 .aar 文件)。

我能够让服务找到我的cayennejar,但是当我尝试对数据库进行查询时,它会引发以下异常:

2013-01-15 17:52:38,891 [http-8080-Processor25] 调试 org.apache.axis2.transport.http.AxisServlet - org.apache.axis2.AxisFault:[v.3.0.2 2011 年 6 月 11 日 09:52 :20] 配置初始化期间出错。[v.3.0.2 Jun 11 2011 09:52:20] [org.apache.cayenne.conf.DefaultConfiguration]:找不到域配置文件“cayenne.xml”。

我一直在尝试将cayenne.xml文件放在任何地方(/lib /WEB-INF/lib /WEB-INF/classes尽管我只对第一个文件抱有希望)。

有人可以告诉我如何进行吗?

是否可以强制 cayenne 在 my 中查找 cayenne.xml/lib directory文件.aar

是否可以打印服务的类加载器使用的类路径(我知道每个服务都应该有自己的类加载器)。

4

1 回答 1

1

虽然我不是 Axis2 专家,但从我对其类加载机制的理论理解来看,我看到了两种选择:

  1. 确保 cayenne-server.jar 和 cayenne.xml 由同一个 ClassLoader 加载(cayenne-server.jar 应该在 /WEB-INF/lib 中,而 cayenne.xml - 在 /WEB-INF/classes/ 中),

  2. 在您引导 Cayenne 的位置的 Axis 代码中设置当前线程类加载器,以便 DefaultConfiguration 可以找到 XML 文件:

    Thread.currentThread().setContextClassLoader(getClass().getClassLoader());

于 2013-01-15T22:56:20.277 回答