簡體   English   中英

如何正確配置 web 應用程序,以便axis2 找到所需的模塊?

[英]How to configure a web-app correctly, so that axis2 finds required modules?

我目前面臨的問題是我有一個 web 應用程序,包括一個軸 2 web 服務客戶端,它應該使用安全壁壘 header。 因此,我改編了axis2.xml文件,在web-app中包含了所有庫和壁壘模塊。 將axis2.xml 放入類路徑(例如/WEB-INF/classes/axis2.xml)可以正常工作。 但是模塊存儲庫呢? 我嘗試了不同的位置(WEB-INF/classes/modules、WEB-INF/modules),但它根本不起作用。 每次我嘗試為客戶端創建 ConfigurationContext 時,都會收到一個異常,即找不到模塊壁壘。

這是我創建上下文的方式(沒什么特別的......)

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

所以我很好奇 -在 web 應用程序中使用axis2客戶端時,應該如何指定模塊位置? 任何幫助表示贊賞:)。

編輯:我這邊的更多信息:

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

另外我想指出,只有模塊沒有找到。 如果我不提供定制的axis2.xml(定義模塊的地方),客戶端工作得很好。

你在哪里有軸類本身? 例如,URLBasedAxisConfigurator。

你沒有說你在哪個 App Server 上運行,但是一些應用服務器有一個類加載器的層次結構,並不是所有的加載代碼都使用相同的類加載器。

因此,例如,如果 Axis 來自由應用服務器本身而不是您的應用程序定義的 class 加載程序,那么您的應用程序的類對 Axis 是不可見的。 因此,您需要將模塊放在某個應用服務器定義的目錄中,或者使用應用服務器特定的機制來告訴它在哪里查找。

更令人困惑的是,您可以擁有一份隨您的應用程序一起交付的 Axis 副本,以及一份隨應用程序服務器一起交付的副本,而您可能沒有使用您認為的那個。

使用 JVM 的詳細類加載器選項(這將產生大量信息),您可能能夠看到正在嘗試查找模塊的搜索路徑,從而獲得有關放置它的位置的線索。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM