bo sap 客户端_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步将超时时间设置过长)。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值