WEB开发网
开发学院软件开发Java 在 Apache Geronimo 应用程序中实现和部署 Web 服... 阅读

在 Apache Geronimo 应用程序中实现和部署 Web 服务

 2010-03-26 00:00:00 来源:WEB开发网   
核心提示: 清单 9 中的片段展示如何从安全处理程序接收主体的凭证,并以这个主体的身份调用 EJB 方法:清单 9. 作为某个安全主体调用业务逻辑//usernameandpasswordareobtainedfromthesecurityhandlerLoginContextctx=createLogin

清单 9 中的片段展示如何从安全处理程序接收主体的凭证,并以这个主体的身份调用 EJB 方法:

清单 9. 作为某个安全主体调用业务逻辑

// username and password are obtained from the security handler 
LoginContext ctx = createLoginContext(username, password); 
ctx.login(); 
try { 
  Set set = ctx.getSubject().getPrincipals( 
    org.apache.geronimo.security.IdentificationPrincipal.class); 
  IdentificationPrincipal idp = (IdentificationPrincipal) set.iterator().next(); 
  Subject subject = 
    org.apache.geronimo.security.ContextManager.getRegisteredSubject(idp.getId()); 
  org.apache.geronimo.security.ContextManager.setCurrentCaller(subject); 
  return (Order[])Subject.doAs(subject, new PrivilegedExceptionAction() { 
    public Object run() throws Exception { 
      BusinessLogic logic = BusinessLogicUtil.getHome().create(); 
      return logic.getOrders(); 
    } 
  }); 
} finally { 
  ctx.logout(); 
} 

这个片段不能转移到处理程序代码中,因为业务方法(在这个例子中是 getOrders)应该以另一个主体的身份运行(doAs 调用),而处理程序在调用服务方法之前执行。

清单 10 展示了为这个应用程序开发的示例 Web 服务部署描述符:

清单 10. Web 服务部署描述符

<?xml version="1.0" encoding="UTF-8"?> 
<webservices xmlns="http://java.sun.com/xml/ns/j2ee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"version="1.1"> 
 <webservice-description> 
  <webservice-description-name>BusinessLogic</webservice-description-name> 
  <wsdl-file>WEB-INF/BusinessLogic.wsdl</wsdl-file> 
  <jaxrpc-mapping-file>WEB-INF/jaxrpc-mapping.xml</jaxrpc-mapping-file> 
  <port-component> 
   <port-component-name>BusinessLogicEndpointPort</port-component-name> 
   <wsdl-port xmlns:ns="http://ibm.com/samples/workdev/v1/wsdl"> 
    ns:BusinessLogicEndpointPort 
   </wsdl-port> 
   <service-endpoint-interface> 
    com.ibm.workdev.v1.interfaces.BusinessLogicEndpoint 
   </service-endpoint-interface> 
   <service-impl-bean> 
    <servlet-link>BusinessLogicServiceServlet</servlet-link> 
   </service-impl-bean> 
   <handler> 
    <handler-name>ServerSecurityHandler</handler-name> 
    <handler-class> 
     com.ibm.workdev.v1.web.wssec.WSSecurityServerHandler 
    </handler-class> 
    <soap-header xmlns:wssec="http://schemas.xmlsoap.org/ws/2003/06/secext"> 
     wssec:Security 
    </soap-header> 
   </handler> 
  </port-component> 
 </webservice-description> 
</webservices> 

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

Tags:Apache Geronimo 应用程序

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