gpt4 book ai didi

Eclipse 没有导入所有 Axis2 jar,但项目仍在 Tomcat 上运行?

转载 作者:行者123 更新时间:2023-11-28 22:22:45 25 4
gpt4 key购买 nike

当我在 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 上运行。我描述了我上面所做的。我的问题是为什么必须采用这种方法?

最佳答案

WebSphere 拥有自己的 axis2 配置,作为其 JAX-WS 的 Java EE 服务器规范的一部分。将您的类加载策略更改为 PARENT_LAST 并检查是否可以解决您的问题。

编辑:正如原始帖子所述:WebSphere 是一个 Java EE 服务器,具体取决于它支持其标准 Java JAX-WS Web 服务的版本。实际上,Web 服务成为标准 jdk 的一部分。

如果您使用 Introduction to JAX-WS 中提到的 JAX-WS或 building web services那么您不必添加任何第 3 方库来运行您的 Web 服务。一旦您使用像 axis2 这样的非 JDK 实现,您就必须将它与您的应用程序打包在一起。

IBM 不仅将 axis2 打包到他们的 WAS/JDK 中,而且还对其进行了修改。我不确定 Tomcat 提供了什么,但是只要您使用 JAX-WS 就没有关系。使用 JAX-WS,您无需直接导入 org.apache.axis 包。如果您使用这些导入,您必须提供库并确保加载您的库。

关于Eclipse 没有导入所有 Axis2 jar,但项目仍在 Tomcat 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com