网上的方案:

每个用户在自己的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服务器的目录上获取

J2EE项目集成SAP的BO报表的更多相关文章

  1. Java项目集成SAP BO

    SAP BO报表查看需要登录SAP BO系统,为了方便公司希望将BO报表集成到OA系统中,所以参考网上资料加上与SAP BO的顾问咨询整理出一套通过Java来集成SAP BO的功能. SAPBO中的报 ...

  2. eclipse配置j2ee项目

    1.下载jdk (1.5,1.6) 安装 从sun的官方网站下载,我下的是jdk-1_5_0_19-nb-6_5_1-windows-ml.exe,集成netbean的版本,下载后一路默认安装. 配置 ...

  3. 现有iOS项目集成React Native过程记录

    在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用 ...

  4. J2EE项目中后台定时运行的程序

    转自:http://www.2cto.com/kf/201311/260676.html 在开发J2EE项目中,有时候需要在后台定时执行一些代码. 比如定时对web数据建立倒排索引.定时发送邮件.定时 ...

  5. 如何正确的将J2ee项目部署到Tomcat

    如何正确的将J2ee项目部署到Tomcat 1.打开配置文件(我的如下:C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\serv ...

  6. J2EE项目中异常处理

     为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2e ...

  7. Vuejs实例-02Vue.js项目集成ElementUI

    Vuejs实例-02Vue.js项目集成ElementUI 0:前言 vue.js的UI组件库,在git上有多个项目,我见的使用者比较多的是iView和Element.两个组件库,组件都很丰富. 官网 ...

  8. Maven构建真正的J2EE项目

    今天同事问起我眼下用Maven构建的多模块项目架构和曾经用Eclipse创建的Web项目的问题.以下将讲一下使用maven搭建多模块的J2ee项目,以及採用这样的方式搭建项目对日后项目的水平拆分和垂直 ...

  9. SAP MM ME1M报表结果不科学?

    SAP MM ME1M报表结果不科学? 做过SAP MM顾问的都知道,报表ME1M可以查询物料的info record列表,即是说可以以列表的形式批量显示多个物料的采购价格主数据. 但是这个报表有个不 ...

随机推荐

  1. 用swift开发仪表盘控件(一)

    苹果swift刚刚推出不久,接触到这个语言是一个偶然的机会,无聊之余随便看了下它的语法: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW5tYW95b2 ...

  2. Android 性能优化之使用MAT分析内存泄露

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/42396507),请尊重他人的辛勤劳动成果,谢谢! 我们平常 ...

  3. android中PopupMenu的使用

    PopupMenu可以非常方便的在指定view的下面显示一个弹出菜单,类似于actionbar溢出菜单的效果.它的菜单选项可以来自于menu资源,因此非常方便.下面是在网上找的一个PopupMenu的 ...

  4. AndroidMainifest标签使用说明1——&lt;action&gt;

    1.<action> 格式: <action android:name="string" /> 父标签: <intent-filter> 描写叙 ...

  5. SQL:查询学习笔记

    SQL 查询命令 SELECT 语法 SELECT "column_name" FROM "table_name"; 返回一列 SELECT Username ...

  6. Round #169 (Div. 2)C. Little Girl and Maximum Sum

    1.用退化的线段树(也就是没有区间查询)做... 2.注意longlong. #include<cstdio> #include<cstring> #include<io ...

  7. 细说Unity3D(一)——移动平台动态读取外部文件全解析

    前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和 ...

  8. 《Java并发编程实战》第四章 对象的组合 读书笔记

    一.设计线程安全的类 在设计线程安全类的过程中,须要包括下面三个基本要素:  . 找出构成对象状态的全部变量.  . 找出约束状态变量的不变性条件.  . 建立对象状态的并发訪问管理策略. 分析对象的 ...

  9. jsonConfig使用方法

    1.先编写jsonConfig的初始化代码 private JsonConfig jsonConfig; public action构造方法() { jsonConfig = new JsonConf ...

  10. Sublimetext3将空格转换为Tab

    最近在学习Python,从网上粘贴的代码很多缩进都是空格,这样就会导致代码执行的时候报错,因为Python是依靠缩进来判断代码层次的.我的编辑器是Sublime Text 3看了一下,原来转换成Tab ...