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?

Спасибо за ваш отзыв,

Оливье


person Olivier    schedule 17.06.2014    source источник
comment
чтобы проверить, загружен ли файл jar, вы можете запустить сервер с помощью консоли osgi (команда: ./wso2server.sh -DosgiConsole). Как только сервер завершит загрузку, нажмите Enter, и вы получите консоль Equinox OSGI. вы можете проверить пакеты с помощью 'ss | grep ‹имя_пакета›'. Здесь действуют все команды равноденствия.   -  person Rajeev Sampath    schedule 17.06.2014
comment
Команда ss показала, что файл JAR действительно не загружался. Без указания причины. Результат дал мне идею, не знаю почему. Я заметил все записи пакета org.x.y, но этого я не делал. Итак, я добавил класс обратного вызова в «мой» пакет, перекомпилировал и переархилировал вещь, и теперь пакет указан с идентификатором 3. Поместите в мой список задач: копаться в равноденствии... Спасибо за подсказку!   -  person Olivier    schedule 18.06.2014


Ответы (1)


Благодаря ответу Раджива я получил подтверждение, что класс не загружается.

Я воссоздал файл JAR с классом, добавленным в пакет, и после перезапуска сервера был создан пакет для JAR. Похоже, что пользовательские классы должны быть добавлены в пакет для Carbon, чтобы создать из него пакет.

Я знаю, я знаю, классы всегда должны быть добавлены в пакет, но я не герой Java и не хотел возиться с каталогами и тому подобным.

Уроки выучены! :)

person Olivier    schedule 18.06.2014