我有一个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 redbook说(第120-121页)可以使用Java客户端访问Web服务,但需要合适的EJB
运行时。
如何在应用程序服务器外复制所需的EJB参数?我尝试使用Eclipse调试器来跟踪应用程序的执行并提取它们,但它失败了,可能是因为这些类是由Weblogic类加载器加载的。