WEB开发网
开发学院软件开发Java 使用 run-as 标识将应用程序连接到缺省消息传递提... 阅读

使用 run-as 标识将应用程序连接到缺省消息传递提供程序

 2009-09-29 00:00:00 来源:WEB开发网   
核心提示: commit 登录处理成功完成后调用一次,此方法对 Subject 进行填充,使用 run-as 标识将应用程序连接到缺省消息传递提供程序(4), logout 在此解决方案中不使用,abort 将在登录失败后调用,则 WSSubject.getRunAsSubject() 所返回的 run-a

commit 登录处理成功完成后调用一次。此方法对 Subject 进行填充。

logout 在此解决方案中不使用。

abort 将在登录失败后调用。此解决方案中并未使用此方法。

清单 1 包含类定义、将稍后使用的一些字段以及 initialize 方法。initialize 方法将直接复制传入的 Subject。

清单 1. LoginModule 初始化

public class SIBRunAsLoginModule implements LoginModule 
{ 
 /** The subject that will be passed to the resource adapter */ 
 private Subject _subjectBeingLoggedOn; 
 
 /** the current application run-as subject */ 
 private Subject _runAsSubject; 
  
 public void initialize(Subject subject, CallbackHandler callbackHandler, 
 Map sharedState, Map options) 
 { 
  _subjectBeingLoggedOn = subject; 
 } 
 
 ... 
}

清单 2 显示了 login 方法。此方法的任务很简单,即获取应用程序的 run-as Subject:

如果失败,则将引发 LoginException,指示登录不成功。

如果引发异常,则将不会创建连接。

如果未启用应用程序安全机制,或应用程序没有 run-as 角色,则 WSSubject.getRunAsSubject() 所返回的 run-as Subject 将为空。

如果引发了异常,则将不会调用 commit 方法。

清单 2. LoginModule login

public boolean login() throws LoginException 
 { 
  try 
  { 
   _runAsSubject = WSSubject.getRunAsSubject(); 
    
   if (_runAsSubject == null) 
   { 
    LoginException loginException = new LoginException ("There was no run-as subject. 
   Either application security " + "is not enabled, or the calling application 
   does not have a run-as role configured"); 
     
    throw loginException; 
   } 
  } 
  catch (WSSecurityException secException) 
  { 
   LoginException loginException = new LoginException("An error occurred getting the 
 run-as subject"); 
   loginException.initCause(secException); 
    
   throw loginException; 
  } 
   
  return true; 
 }

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 run as

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接