【发布时间】:2012-01-24 22:21:40
【问题描述】:
当我在 Eclipse 上开发 Axis2 Web 服务时,我注意到 Eclipse 会自动将类从 Axis2 的 lib 文件夹复制到新项目的 lib 文件夹中。但是,并非 Axis2 的 lib 文件夹中的所有类都被复制。有趣的是,当通过 Eclipse 部署到 Tomcat 时,即使未复制 Axis2 中的一些 jar,Web 服务也可以正常运行。另外,当我查看 Tomcat 的临时文件时,Tomcat 似乎会为 web 服务的 modules.list 上列出的模块生成 jar。
有人可以告诉我这是怎么回事吗?为什么 Eclipse 不从 Axis2 复制所有 jar?为什么即使没有来自 Axis2 的其他 jar,Web 服务也可以在 Tomcat 上运行?这些临时文件是干什么用的?它何时以及为何生成?
我尝试在 WebSphere 上运行相同的项目,但由于缺少 jar,我遇到了 ClassDefNotFound 异常。当我将 Eclipse 未复制的所有 Axis2 jar 复制到我的项目中时,我的问题得到了解决。但我对我的解决方案并不满意,因为即使没有这些 jar,Tomcat 也可以运行我的项目。我的解决方案真的是正确的解决方案吗?还是我缺少配置设置?
这只是为了澄清:
我的 Web 服务已经在 Axis2 中运行。我的类加载策略设置为 PARENT_LAST。我知道,由于 WebSphere 有自己的 Axis2 配置,因此必须将类加载策略设置为 PARENT_LAST,这样 WebSphere 才能使用项目本身的 Axis2。除了设置类加载策略之外,我还做了一些事情来让我的 Web 服务在 WebSphere 上运行。我描述了我在上面所做的事情。我的问题是为什么必须采取这种方法?
【问题讨论】:
标签: eclipse web-services tomcat websphere axis2