`
likegene
  • 浏览: 7292 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
最近访客 更多访客>>
社区版块
存档分类
最新评论

windows下ITIM admin API开发环境配置,部署至tomcat

阅读更多

开发环境构建
1. ibm_sdk50 java.security.
 
A. 下载/opt/IBM/itim/extensions/5.1/examples/apps/bin/jaas_login_was.conf 至D:/jaas_login_was.conf
B.修改 java.security文件( D:\IBM\eclipseDevelopmentPackage\ibm_sdk50\jre\lib\security\ java.security ),尾部添加如下
login.config.url.1=file:///D:/jaas_login_was.conf

2.添加依赖的jar包列表至WEB-INF/lib及其它配置:
APP_SRV_TOP=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ITIM_HOME=/opt/IBM/itim

$ITIM_HOME/lib/api_ejb.jar
$ITIM_HOME/lib/itim_api.jar
$ITIM_HOME/lib/itim_common.jar
$ITIM_HOME/lib/itim_server_api.jar
$ITIM_HOME/lib/jlog.jar
$APP_SRV_TOP/runtime/com.ibm.ws.admin.client_6.1.0.jar
$APP_SRV_TOP/plugins/com.ibm.ws.ejbportable_6.1.0.jar

下载$ITIM_HOME/data/tmsMessages.properties

C:\WINDOWS\system32\drivers\etc\hosts中 添加域名映射如下
192.168.2.12 

      itim

4.项目的目录结构图如下:
windows下ITIM <wbr>admin <wbr>API开发环境配置,部署至tomcat


5.部署至apache-tomcat-6.0.18服务器中
A.配置apache-tomcat-6.0.18运行jre
在apache-tomcat-6.0.18/bin/setclasspath.bat中添加JRE_HOME:
set JRE_HOME="D:\IBM\eclipseDevelopmentPackage\ibm_sdk50\jre"
B.拷贝$APP_SRV_TOP/runtime/com.ibm.ws.admin.client_6.1.0.jar到apache-tomcat-6.0.18/lib中

附录代码
PersonMgr.java
package com.likegene.demo;

import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Hashtable;
import java.util.ResourceBundle;

import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;

import com.ibm.itim.apps.ApplicationException;
import com.ibm.itim.apps.InitialPlatformContext;
import com.ibm.itim.apps.PlatformContext;
import com.ibm.itim.apps.Request;
import com.ibm.itim.apps.identity.PersonMO;
import com.ibm.itim.apps.identity.PersonManager;
import com.ibm.itim.apps.jaas.callback.PlatformCallbackHandler;
import com.ibm.itim.apps.provisioning.PasswordManager;


public class PersonMgr {

    static ResourceBundle rb = ResourceBundle.getBundle("context");

    public Subject getSubject(PlatformContext platform) {

        String itimManager = rb.getString("itimManager");
        String itimManagerPwd = rb.getString("itimManagerPwd");
        Subject subject = null;
        try {
            PlatformCallbackHandler handler = new PlatformCallbackHandler(
                    itimManager, itimManagerPwd);
            handler.setPlatformContext(platform);
            LoginContext lc = new LoginContext("ITIM", handler);
            lc.login();
            subject = lc.getSubject();
        }

        catch (LoginException e) {
            e.printStackTrace();
        }

        return subject;
    }

    public PlatformContext getPlatform() {

        String platformContextFactory = rb.getString("contextFactory");
        String ejbUser = rb.getString("ejbUser");
        String appServerURL = rb.getString("appServerURL");
        String ejbPwd = rb.getString("ejbPwd");

        Hashtable<String, String> env = new Hashtable<String, String>();
        env.put(InitialPlatformContext.CONTEXT_FACTORY, platformContextFactory);
        env.put(PlatformContext.PLATFORM_URL, appServerURL);
        env.put(PlatformContext.PLATFORM_PRINCIPAL, ejbUser);
        env.put(PlatformContext.PLATFORM_CREDENTIALS, ejbPwd);
        PlatformContext platform = null;

        try {
            platform = new InitialPlatformContext(env);
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (ApplicationException e) {
            e.printStackTrace();
        }
        return platform;
    }

    public String updatePersonPwd(String uid, String newPwd) {
        PlatformContext platform = getPlatform();
        Subject subject = getSubject(platform);

        PersonManager mgr = new PersonManager(platform, subject);

        // find user
        Collection people;
        try {
            people = mgr.getPeople("uid", uid, null);

            if (people.size() == 0) {
                System.out.print("用户不存在 :" + uid);
                return null;
            }

            PersonMO personMO = (PersonMO) people.iterator().next();

            PasswordManager pManager = new PasswordManager(platform, subject);
            Request request = pManager.synchPasswords(personMO, newPwd, null);
            String requestID = String.valueOf(request.getID());
            System.out.print("修改用户密码请求已提交. 处理 request ID:" + requestID);
            return requestID;
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (ApplicationException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        PersonMgr pm = new PersonMgr();
        pm.updatePersonPwd("asmsith", "admin1234567");
    }
}

ChangePwdServlet.java
package com.likegene.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ChangePwdServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public ChangePwdServlet() {
        super();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String newpassword = request.getParameter("newPwd");
        String userid = request.getParameter("uid");

        PersonMgr pm = new PersonMgr();
        if (pm.updatePersonPwd(userid, newpassword) != null) {
            request.setAttribute("msg", "change password successfully!");
        } else {
            request.setAttribute("msg", userid + " not exist!");
        }
        request.getRequestDispatcher("./result.jsp").forward(request, response);
    }
}
context.properties
appServerURL=iiop://itim:2809
contextFactory=com.ibm.itim.apps.impl.websphere.WebSpherePlatformContextFactory
itimManager=itim manager
itimManagerPwd=object00
ejbUser=wasadmin
ejbPwd=object00
rootdn=ou=xyz,o=xyz

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 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://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>ChangePwdServlet</servlet-name>
    <servlet-class>com.likegene.demo.ChangePwdServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ChangePwdServlet</servlet-name>
    <url-pattern>/ChangePwdServlet</url-pattern>
  </servlet-mapping>
       
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>


index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <meta http-equiv=Content-Type content="text/html; charset=UTF-8">
  </head>
  <body>
      <form method="post" action="./ChangePwdServlet">
          <table>
            <tr>
            <td>修改密码:</td>
            <td>UID:</td>
            <td><input type="text" name="uid"/></td>
            <td>新密码:</td>
            <td>
            <input type="text"  name="newPwd"/></td>
            <td>
            <input type="submit" value="修改" />
            </td>
            </tr>
        </table>
    </form>
  </body>
</html>

result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>result</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
  </head>
  <body>
    ${msg}
  </body>
</html>
分享到:
评论

相关推荐

    ITIM_5.0_and_5.1_Performance_Tuning_Guide

    1. WebSphere®:WebSphere是IBM的应用服务器平台,是ITIM运行的环境。调优WebSphere可以改进ITIM的性能,包括调整连接池、线程池、垃圾回收参数等。 2. 数据库服务器:指南提供了针对IBM DB2®、Oracle和MSSQL...

    TIM开发指导手册

    手册的第二部分则专注于TIM开发环境的配置,特别是对于基于Tomcat的二次开发: 1. **配置JDK**:需要使用IBM Java 50,并修改其`java.security`文件,添加或更新登录配置文件的引用,例如将`jaas_login_was.conf`...

    TIM 系统部署

    本文将详细介绍TIM 5.0系统的单服务器配置与部署流程,包括必要的前置软件(如DB2数据库、WebSphere应用服务器等)的安装配置步骤。 #### 二、部署前准备 在部署TIM系统之前,需要先部署一系列的基础组件,这些...

    node-e-itimi-movie-api:节点JS-电影API

    节点eğitim电影API Node.JS紧急设置-电影API MF 电影 路线 HTTP动词 开机自检正文 描述 / api /电影 GET 空的 列出所有电影。 / api /电影 POST {'title':'foo','category':'bar','country':'Turkey',年...

    TIM+SSO配置手册[归纳].pdf

    《TIM+SSO配置手册》是一份详细的指南,旨在帮助用户理解并实施TIM(Tivoli Identity Manager)与SSO(Single Sign-On)的集成配置。这份文档由黄玉庆编写,日期为2008年7月20日,版本为V1.0。手册覆盖了从软件安装...

    TIM和webseal的sso Portal与webseal的sso

    根据提供的标题、描述、标签及部分内容,本文将详细介绍IBM Tivoli身份管理(TIM)与WebSEAL单点登录(SSO)的相关配置方法,并进一步解释Portal与WebSEAL的SSO配置过程。以下内容旨在帮助读者理解并实现这些配置。 #...

    IBM TAM TIM step by step lab5(从安装到配置 应用尽有) best practise

    【IBM TAM TIM 实验室指南】是一份详细的操作手册,旨在帮助用户逐步了解并实践IBM Threat Analytics and Management Engine (TAM) 和 Threat Intelligence Manager (TIM) 的安装、配置及管理。这个实验室涵盖了从...

    Eğitim Bir-Sen-crx插件

    在这一背景下,为土耳其语用户量身打造的"Eğitim Bir-Sen-crx" Chrome插件应运而生。 "Eğitim Bir-Sen-crx"插件是一个旨在为土耳其语用户提供一站式教育信息服务平台的Chrome浏览器扩展程序。它通过集成教育新闻...

    07_TIM安装手册

    - **创建DB2实例与itim数据库**:涉及修改DB2配置文件、创建数据库目录、设置字符集、调整数据库配置参数等。 - **执行TIM安装程序**:通过光盘上的安装脚本,按提示完成语言选择、许可协议接受、安装目录与模式设定...

    YDS Online Eğitim Videoları: Hız & Tekrar-crx插件

    【标题】:“YDS Online Eğitim Videoları: Hız & Tekrar-crx插件”是专为在线学习平台设计的一款浏览器扩展程序,旨在提升用户在观看YDS Online Eğitim Videoları(YDS在线教育视频)时的学习体验。...

    FinalProject:31 Ocak 2021Veritabanıprogramlama-数据库编程eğitim

    【标题】"FinalProject:31 Ocak 2021Veritabanıprogramlama-数据库编程eğitim" 涉及的是一个关于数据库编程的最终项目,可能是一个培训课程或者学习活动的成果展示,时间点是2021年1月31日。这个项目可能集中在...

    教育One-Sen「Eğitim Bir-Sen」-crx插件

    Eğitim-Bir-SenChrome Eklentisi Sayesinde,Genel MerkezManşetHaberlerine,ŞubeHaberlerine veKöşeYazılarınaSiteye Girmeden Daha Kolay BirŞekildeUlaşılabilecek。 支持语言:Türkçe

    IT 基础架构监控工具市场指南-EN.pdf

    在云计算和模块化设计的推动下,市场出现了多样的新进入者,这些新的监控解决方案可以更好地适应动态变化的环境,并能够处理跨多个云平台和混合IT基础设施的复杂性。传统上,不同部门可能会使用多种监控工具,导致...

    sifive u74-mc的4种编译脚本分析

    对于开发者而言,了解如何正确地配置编译选项和脚本对于优化应用程序的性能至关重要。 #### 二、sifive u74-mc的三种编译脚本 在官方文档sifive_u74mc_21G3.02.00_manual的第6.16章节中提到了关于Linker文件的重要...

    线装机DIY系统的分析与设计论文.doc

    这些技术的应用对于在线装机DIY系统的成功实施至关重要。 7. 在线装机DIY系统的应用前景:在线装机DIY系统可以广泛应用于各种领域,例如电子商务、制造业、Eğitim等。在线装机DIY系统可以提高用户体验、提高生产...

    ISIM-LDAP-Sifter:一组ISIM数据处理工具

    这对于数据改组和创建Prod数据子集以在其他环境中安全使用也很有用访问控制列表服务人事记录租户配置-erglobalid = 00000000000000000000,ou = [名称],dc = com: ITIM配置-ou = itim,ou = [name],DC = COM ...

    ehcache-2.8.4-distribution.tar.gz

    4. **多线程支持**:作为Java库,EhCache天然支持多线程环境,确保了在并发环境下的数据一致性。 5. **扩展性**:除了基本的缓存功能,EhCache还支持分布式缓存,通过网络在多台机器之间共享缓存数据,实现更强大的...

    用于网络性能监控和诊断的魔力象限-EN.pdf

    云计算的普及要求NPMD解决方案能够在多云环境中提供一致的性能监控,这对于管理云服务的性能和可靠性至关重要。而在物联网领域,NPMD解决方案有助于监控数以亿计的设备,并确保这些设备能够有效地收集和传输数据。 ...

    云计算行业全球SaaS云计算产业系列报告33:Datadog,全球领先的云监控平台精品报告2020.pdf

    它不仅提供对公共云、私有云、本地部署的支持,还能够适应多云混合环境。这种产品布局和技术优势是Datadog在激烈的市场中保持领先地位的关键。 报告指出,Datadog的Non-GAAP毛利率在2020年上半年为80%,较2019年有...

    EJB基础及应用开发

    - **云原生支持**: 支持容器化和云环境下的部署和管理。 - **持续优化**: 在保持现有优势的同时,不断优化性能和易用性。 总之,EJB作为一项成熟的技术,在企业级应用领域仍然占据着重要的位置。虽然面对新兴技术的...

Global site tag (gtag.js) - Google Analytics