我有一个 Web 应用程序,主要由其他人基于 JSF 2、Mybatis、Spring 3 和数十个其他库编写,在 Weblogic 上运行,它可以工作,现在我必须创建一个不同的命令行应用程序来安排一些已经存在的任务的运行在网络应用程序中。
我添加了一个带有main
方法的类,以便仅维护一个具有不同构建过程的代码库,以生成可执行文件JAR
而不是WAR
. 使用 Spring,ClassPathXmlApplicationContext
我设法重新创建 Web 应用程序上下文,访问数据库 bean 并使用它们,但我遇到了失败的 WSRR 调用。
命令:
GraphQuery graphQuery =
(GraphQuery)DataFactory.INSTANCE.create(TypeConstants.SR_URI, TypeConstants.TYPE_GRAPHQUERY);
graphQuery.setQueryExpression("/WSRR/GenericObject[@CFT_APPLIC='DS" + param + "']");
长堆栈失败,有根异常
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 客户端访问 Web 服务,但需要合适的EJB
运行时。
如何在应用程序服务器之外复制所需的 EJB 参数?我尝试使用 Eclipse 调试器跟踪应用程序的执行并提取它们,但它失败了,可能是因为类是由 Weblogic 类加载器加载的。