gpt4 book ai didi

java - 如何正确配置网络应用程序,以便 axis2 找到所需的模块?

转载 作者:行者123 更新时间:2023-11-29 09:20:35 28 4
gpt4 key购买 nike

我目前面临的问题是我有一个包含轴 2 Web 服务客户端的 Web 应用程序,它应该使用 rampart 作为安全 header 。因此,我调整了 axis2.xml 文件,将所有库和 rampart 模块包含在 Web 应用程序中。将 axis2.xml 放在类路径中(例如/WEB-INF/classes/axis2.xml)效果很好。但是模块存储库呢?我尝试了不同的位置(WEB-INF/classes/modules、WEB-INF/modules),但它根本不起作用。每次我尝试为客户端创建 ConfigurationContext 时,我都会遇到无法找到模块 rampart 的异常。

这是我创建上下文的方式(没什么特别的...)

ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromURIs(axis2Location, moduleLocation);

这就是我收到的异常:

Caused by: org.apache.axis2.AxisFault: The system is attempting to engage a module that is not available: rampart
at org.apache.axis2.deployment.URLBasedAxisConfigurator.getAxisConfiguration(URLBasedAxisConfigurator.java:78)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromURIs(ConfigurationContextFactory.java:194)
at com.test.webclient.Environment.create(Environment.java:88)
... 32 more

所以我很好奇 - 在网络应用程序中使用 axis2 客户端时,应该如何指定模块位置?任何帮助表示赞赏:)。

编辑:我这边的更多信息:

-> 使用的 AS 是 JBoss 5.1GA-> Axis2 版本为 1.4.1-> Axis2 jar(s) 随我的应用程序一起交付在 WEB-INF/lib 中,它们不存在于 Appserver 的其他任何地方(例如 JBOSS_HOME/lib)。

另外我想指出的是,只有模块没有找到。如果我不提供自定义的 axis2.xml(定义模块的地方),客户端就可以正常工作。

最佳答案

轴类本身在哪里?例如,URLBasedAxisConfigurator。

你没有说你在哪个应用服务器上运行,但一些应用服务器有一个类加载器的层次结构,并不是所有的加载代码都使用相同的类加载器。

例如,如果 Axis 来自应用服务器本身定义的类加载器而不是您的应用程序,那么您的应用程序的类将对 Axis 不可见。因此,您需要将模块放在某个应用服务器定义的目录中,或者使用特定于应用服务器的机制来告诉它在哪里查找。

更令人困惑的是,您可以将一份 Axis 副本与您的应用程序一起交付,并在应用程序服务器上交付一份,但您可能使用的不是您认为的那个。

使用 JVM 的详细类加载器选项(这将产生大量信息)您可能能够看到在查找模块时正在尝试的搜索路径,从而获得有关位置的线索把它。

关于java - 如何正确配置网络应用程序,以便 axis2 找到所需的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6704087/

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