Использовать веб-сервис WSRR вне веб-приложения
У меня есть веб-приложение, написанное в основном другими пользователями на основе JSF 2, Mybatis, Spring 3 и десятков других библиотек, работающее на Weblogic, оно работает, и теперь мне нужно создать отдельное приложение командной строки, чтобы запланировать выполнение некоторых уже существующих задач. в веб-приложении.
Я добавил класс с main
метод для поддержки только одной кодовой базы с другим процессом сборки для генерации исполняемого файла JAR
вместо WAR
, Используя Spring ClassPathXmlApplicationContext
Мне удалось воссоздать контекст веб-приложения, получить доступ к компонентам базы данных и использовать их, но я застрял с вызовом WSRR, который завершается неудачно.
Команды:
GraphQuery graphQuery =
(GraphQuery)DataFactory.INSTANCE.create(TypeConstants.SR_URI, TypeConstants.TYPE_GRAPHQUERY);
graphQuery.setQueryExpression("/WSRR/GenericObject[@CFT_APPLIC='DS" + param + "']");
ошибка с длинным стеком, имеющим исключение root
Caused by: java.lang.NullPointerException
at java.util.ResourceBundle.getBundle(ResourceBundle.java:960)
at com.ibm.ws.webservices.engine.resources.ProjectResourceBundle$Context.loadBundle(ProjectResourceBundle.java:474)
at com.ibm.ws.webservices.engine.resources.ProjectResourceBundle.getBundle(ProjectResourceBundle.java:372)
at com.ibm.ws.webservices.engine.resources.ProjectResourceBundle.getBundle(ProjectResourceBundle.java:341)
at com.ibm.ws.webservices.engine.resources.MessagesConstants.<clinit>(MessagesConstants.java:93)
Я обнаружил, что некоторые классы и конфигурации предоставляются сервером приложений во время выполнения и не имеют представления о том, как заменить их вне сервера приложений.
В справочнике IBM говорится (стр. 120-121), что можно получить доступ к веб-службе с помощью клиента Java, но требуется подходящий EJB
во время выполнения.
Как я могу реплицировать необходимые параметры EJB вне сервера приложений? Я пытался использовать отладчик Eclipse, чтобы следить за выполнением приложения и извлекать их, но это не удается, вероятно, потому что классы загружаются загрузчиком классов Weblogic.