【发布时间】:2017-01-28 01:09:43
【问题描述】:
我使用以下代码 (see this SO post) 来读取在我的 WAS 7 服务器上存储为 JC2 别名的用户 ID 和密码。
Map<String, String> map = new HashMap<String, String>();
map.put(Constants.MAPPING_ALIAS, MDM_JC2_ALIAS);
CallbackHandler callbackHandler = WSMappingCallbackHandlerFactory.getInstance().getCallbackHandler(map, null);
LoginContext loginContext = new LoginContext(DEFAULT_PRINCIPAL_MAPPING, callbackHandler);
loginContext.login();
Subject subject = loginContext.getSubject();
Set<Object> credentials = subject.getPrivateCredentials();
PasswordCredential passwordCredential = (PasswordCredential) credentials.iterator().next();
userId = passwordCredential.getUserName();
password = new String(passwordCredential.getPassword());
代码运行良好。但现在我正在尝试在批处理中使用它。要测试批处理过程,我必须在 Rad 8.5 中使用 Run->Debug As。 (我使用 Run->Debug As->Debug 配置来配置进程)。我收到错误“java.lang.NullPointerException:WSMappingCallbackHandlerFactory 未初始化”。我已经逐步完成了有效的代码,并且看不到与无效代码的值有任何区别。我怀疑我可能需要在调试配置中修改构建路径,但我不知道要更改什么。
编辑:
我认为我没有很好地解释这种情况。该代码在 WAS 7 上运行的 Web 服务中运行。我们有完全不同的项目,其中包含一些称为批处理作业的代码,如下所示:
-classpath D:\WebSphere\AppServer\profiles\AppSrv01\Apps\Cell01\SSS.ear\PlanningEJB.jar;
D:\WebSphere\AppServer\profiles\AppSrv01\Apps\Cell01\SSS.ear\Planning.war\WEB-INF\classes;
D:\Progra~1\IBM\SQLLIB\java\db2jcc.jar -Dlog4j.configuration=file:/d:/apps/websphere/SSS/properties/log4J.properties
url.planning.batch.AppName D:\\apps\\websphere\\SSS\\properties\\sss.properties
我想将读取用户 ID 和密码的代码添加到称为批处理作业的代码中。通常要调试称为批处理作业的代码,我们使用调试配置并且服务器不必运行。我可以设置断点并单步执行代码,直到我到达callbackHandler 行。
【问题讨论】:
-
当你说代码工作正常时。你的意思是你可以让它与 Run->Run As 一起工作,但当你尝试调试时失败?如果这不是您的意思,您能否澄清一下您在可以使其工作时使用的设置/环境?
-
它在被称为 Web 服务的 Web 项目中运行良好。
-
你需要在调试模式下启动服务器,然后调用该服务,如果你设置了一个,你应该切换到调试透视和断点。如果您尝试将其作为标准 java 应用程序进行调试,它将无法正常工作。它必须从服务器运行。
-
要获取服务器外部的配置信息,您需要使用
com.ibm.websphere.management.*API 之一,例如 (com.ibm.websphere.management.configservice.ConfigService)、MBeans ,或 wsadmin jacl/jython。正如@Gas 所说,您使用的 API 只能在服务器中运行。 -
说你是在“批处理”模式下运行它,你的意思是你试图在服务器之外运行一个独立的 Java main()?如果是这样,您是否假设服务器环境中可用的任何 API 在服务器外部都可用,只需在类路径中放置适当的类?情况并非如此,如果 API 在服务器之外无法工作,则您无法对类路径或 Debug 配置进行任何更改。
标签: java eclipse websphere ibm-rad