【问题标题】:Eclipse doesn't import all Axis2 jars but project still runs on Tomcat?Eclipse 不导入所有 Axis2 jar,但项目仍在 Tomcat 上运行?
【发布时间】: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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我已经告诉他了(见stackoverflow.com/questions/8502240/…),但他不会听到...
    • @AndreasVeithen:我知道 WebSphere 有自己的配置。当我问你回答的问题时,我的类加载策略已经设置为 PARENT_LAST。这就是我发布问题的原因,因为即使我的类加载策略已经设置为 PARENT_LAST,我的 Web 服务仍然无法正常工作。无论如何,我的网络服务已经在工作了,你的解决方案不是我的问题的解决方案。我在我自己的问题上发布了我的答案。也许你还没有检查回来。而我目前的问题不是如何解决。
    • @Udo Held:感谢您的回复,但我的问题不是如何解决。我已经能够在 Axis2 上运行我的 Web 服务。我的方法在我的帖子中有所说明。我的问题是为什么需要这种方法来使 Axis2 Web 服务在 WebSphere 上运行。这与类加载策略无关。
    • 更新了帖子。使用 JAX-WS,你可以扔掉你的库。
    • @Udo 举行:谢谢!这就是为什么我在这里有点困惑,因为我知道缺少的 jars 是运行 Web 服务所必需的。不过即使是这样,Tomcat也没有问题呢。 :/ 我还没有尝试使用 JAX-WS 进行开发,但我一定会研究它。感谢您提供的链接!但是我们的 Web 服务仍然在使用 Axis2,所以我必须让它运行,同时还要知道服务器上的事情是如何工作的。
    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 2012-10-05
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多