zoukankan      html  css  js  c++  java
  • J2EE项目集成SAP的BO报表

    网上的方案:

    每个用户在自己的J2EE系统的用户登陆的同时登陆bo系统,这做法的缺点是登陆bo速度慢,而且如果J2EE用户比较多的话会在bo服务器生成很多的token。

    最佳方案(自己研究):

    1、调用bo报表的路径:

    如果是在iframe中引入该地址,则需要将bo服务器的ip加入可信任站点,否则访问将报500错误

    原因:iframe是没有权限在父页面写session信息的

    2、使用quartz在服务器启动的时候自动登陆bo服务器获取token。

    在J2EE服务中新建一个bologin.do的链接来处理bo登陆,登陆后将token放入application中。

    代码如下:

            HttpSession session = request.getSession();
            
            String cms = "xx.xx.xx.xx:6400";
            
            //认证的安全类型,类型是以上几种,如果是SAP,则类型字符为secSAPR3
            String authentication = "secEnterprise";
            
            //用户名,如果是SAP系统方式登录,格式为bwp~888/eiacext1
            String poUsername = "administrator";
            String poPassword = "password";//密码
    
            //登录并获得TOKEN,并命名用OpenDocument方式打开一个文件
            ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
            IEnterpriseSession enterpriseSession = sessionMgr.logon(poUsername, poPassword, cms,authentication);
            ILogonTokenMgr mgr = enterpriseSession.getLogonTokenMgr();
            
            /**
             * 
             * String  token=logonTokenMgr.createLogonToken("",10,5);
                其中createLogonToken(java.lang.String clientComputerName, int validMinutes, int validNumOfLogons)
                clientComputerName为使用这个token的客户端计算机名,空字符串表示该token可被任何客户端使用;
                validMinutes为token的有效时间(分钟);
                validNumOfLogons 表示该token允许被使用的最大次数。
             * 
             */
            String tokenStr = mgr.createLogonToken("",24*60,Integer.MAX_VALUE);
            
            session.getServletContext().setAttribute("token", tokenStr);
            return null;

    3、由于token的是有有效期的,而且过期后在让我们正常的J2EE项目发生bo的session超时而将我们的系统跳转到bo的登陆界面!!!

    故我们需要设置token的有效期,设置有效期为1天。

    String tokenStr = mgr.createLogonToken("",24*60,Integer.MAX_VALUE);

    4、设置定时器在凌晨去重新登陆bo获取新的token,保证token永不超时(不建议在第3步将超时时间设置过长)。

    quartz定时器的用法参考我的另外一篇博文:http://www.cnblogs.com/yangzhilong/p/3349116.html

    文章中java代码用到了SAP的jar包,可以去BO服务器的目录上获取

  • 相关阅读:
    ps photoshop cc 2015 Extract Assets(生成器)切图大法
    获取免费代理推荐
    nodejs http代理请求
    nodejs 发起http请求
    AHK GUI开发示例
    为【桌面右键菜单
    NPM 模块收集
    nodejs Commander 命令行神器简单示例
    如何用nodejs 开发一个命令行交互工具
    利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3352153.html
Copyright © 2011-2022 走看看