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

时间:2014-06-17 09:22:55

标签: wso2 esb ws-security rampart

我正在尝试按照找到here的教程设置隐藏后端服务安全性的代理服务。 对于密码回调处理程序,我按照here找到的说明操作。 一切都非常简单明了。

我将PWCBHandler类编译成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文件?什么可能禁止加载PWCBHandler JAR?

感谢您的反馈,

奥利弗

1 个答案:

答案 0 :(得分:0)

感谢Rajeev的回答,我确认课程没有加载。

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

我知道,我知道,应该总是将类添加到包中,但我不是Java英雄,并且不想打扰dirs等。

经验教训! :)