博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J2EE项目集成SAP的BO报表
阅读量:4685 次
发布时间:2019-06-09

本文共 1829 字,大约阅读时间需要 6 分钟。

网上的方案:

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

 

最佳方案(自己研究):

1、调用bo报表的路径:

报表的编号&token=bo登陆后获得的token

如果是在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定时器的用法参考我的另外一篇博文:

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

转载于:https://www.cnblogs.com/yangzhilong/p/3352153.html

你可能感兴趣的文章
轻松自动化---selenium-webdriver(python) (四)
查看>>
mmap内存映射
查看>>
Javascript - ERR_CONTENT_LENGTH_MISMATCH
查看>>
开启迅盘:ReadyBoost和ReadyDrive的开启方法
查看>>
Day25.2 类中的方法
查看>>
Linux 2.6 字符设备驱动程序
查看>>
返回一个二维数组中最大子数组的和
查看>>
memcached知识点梳理
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
asp.net mvc在Model中控制日期格式
查看>>
Pandas基础(十一)时间序列
查看>>
arrow:让Python的日期与时间变的更好
查看>>
大型网站技术架构 大纲
查看>>
nginx https ssl 设置受信任证书[转然哥]
查看>>
【转载】注意 ExecuteNonQuery() 返回值问题
查看>>
让IIS支持ASPX,添加Web服务扩展的方法,没法调试的解决办法
查看>>
【转】linux分区大小调整完全手册
查看>>
【BZOJ-3238】差异 后缀数组 + 单调栈
查看>>
SAS学习笔记 - R的数据操作
查看>>
spi master vhd timing
查看>>