WSO2 ESB:未加载回调处理程序的JAR文件

WSO2 ESB:未加载回调处理程序的JAR文件,wso2,esb,ws-security,rampart,Wso2,Esb,Ws Security,Rampart,根据教程,我正在尝试设置一个隐藏后端服务安全性的代理服务。 对于密码回调处理程序,我遵循找到的说明。 所有这些都非常简单和直接 我将pwcbdhandler类编译成一个JAR文件,并将其与wss4j-1.6.15\lib中的所有JAR文件一起放在esbhome\repository\components\lib文件夹中 在ESB启动期间,我看不到任何警告或错误。但是,当我测试代理服务时,在日志中出现以下错误: org.apache.axis2.AxisFault: Error in obtain

根据教程,我正在尝试设置一个隐藏后端服务安全性的代理服务。 对于密码回调处理程序,我遵循找到的说明。 所有这些都非常简单和直接

我将
pwcbdhandler
类编译成一个JAR文件,并将其与wss4j-1.6.15\lib中的所有JAR文件一起放在esbhome\repository\components\lib文件夹中

在ESB启动期间,我看不到任何警告或错误。但是,当我测试代理服务时,在日志中出现以下错误:

org.apache.axis2.AxisFault: Error in obtaining a token
    at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:76)
    at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
...
Caused by: org.apache.rampart.RampartException: Error in obtaining a token
    at org.apache.rampart.util.RampartUtil.getToken(RampartUtil.java:779)
    at org.apache.rampart.util.RampartUtil.getIssuedToken(RampartUtil.java:675)
...
Caused by: org.apache.rampart.RampartException: Cannot load password callback class: PWCBHandler
    at org.apache.rampart.util.RampartUtil.getPasswordCB(RampartUtil.java:144)
    at org.apache.rampart.util.RampartUtil.getPasswordCB(RampartUtil.java:118)
    at org.apache.rampart.util.RampartUtil.getToken(RampartUtil.java:723)
...
    ... 26 more
Caused by: java.lang.ClassNotFoundException: PWCBHandler
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    ... 26 more
Caused by: java.lang.ClassNotFoundException: PWCBHandler
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at org.apache.ws.security.util.Loader.loadClass(Loader.java:200)
    at org.apache.ws.security.util.Loader.loadClass(Loader.java:163)
    at org.apache.rampart.util.RampartUtil.getPasswordCB(RampartUtil.java:142)
    ... 28 more
[2014-06-16 15:56:23,103]  WARN - FaultHandler ERROR_CODE : 0
[2014-06-16 15:56:23,103]  WARN - FaultHandler ERROR_MESSAGE : Unexpected error during sending message out
[2014-06-16 15:56:23,103]  WARN - FaultHandler ERROR_DETAIL : org.apache.synapse.SynapseException: Unexpected error during sending message out
    at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:170)
    at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:69)
...
换句话说,ESB和Rampart知道
PWCBHandler
类,但无法加载/访问它

在这一点上,我不知道在哪里可以看得更远。是否有一种方法可以检查启动期间加载了哪些JAR文件?什么可能会禁止加载
pwcbdhandler
JAR

感谢您的反馈


Olivier

多亏了Rajeev的回答,我得到了课堂没有加载的确认

我用添加到包中的类重新创建了JAR文件,重新启动服务器后,为JAR创建了一个包。 看起来需要将自定义类添加到Carbon的包中,以便从中创建一个包

我知道,我知道,类应该总是添加到包中,但我不是Java英雄,也不想为DIR之类的东西操心


经验教训!:)

要检查是否加载了jar文件,可以使用osgi控制台启动服务器(命令:./wso2server.sh-DosgiConsole)。一旦服务器完成加载,点击enter,您将获得equinox osgi控制台。您可以使用“ss | grep”检查捆绑包。所有equinox命令在这里都是有效的。
ss
命令显示JAR文件确实没有加载。没有说明原因。输出确实给了我一个想法,不知道为什么。我注意到了所有的
org.x.y
包条目,但我没有这样做。因此,将回调类添加到“my”包中,重新编译并重新震击该包,现在该包在id 3处列出。把我的待办事项列在清单上:进入春分。。。谢谢你的提示!