WSO2 ESB: файл JAR с обработчиком обратного вызова не загружается
Я пытаюсь настроить прокси-службу, которая скрывает безопасность серверной службы, следуя инструкции, найденной здесь. Для обработчика обратного вызова пароля я следую инструкциям, найденным здесь. Все довольно просто и понятно.
Я составил PWCBHandler
Класс в файл JAR и поместите его в папку esbhome\repository\components\lib вместе со всеми файлами JAR из wss4j-1.6.15\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 ответ
Благодаря ответу Раджива я получил подтверждение, что класс не загружается.
Я заново создал файл JAR с добавленным в пакет классом, и после перезапуска сервера был создан пакет для JAR. Похоже, что пользовательские классы должны быть добавлены в пакет для Carbon, чтобы создать пакет из него.
Я знаю, я знаю, классы всегда должны быть добавлены в пакет, но я не герой Java и не хотел беспокоиться о каталогах и тому подобном.
Уроки выучены!:)