J2EE项目集成SAP的BO报表
网上的方案:
每个用户在自己的J2EE系统的用户登陆的同时登陆bo系统,这做法的缺点是登陆bo速度慢,而且如果J2EE用户比较多的话会在bo服务器生成很多的token。
最佳方案(自己研究):
1、调用bo报表的路径:
http://xx.xx.xx.xx:8080/BOE/OpenDocument/opendoc/openDocument.jsp?sIDType=CUID&iDocID=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定时器的用法参考我的另外一篇博文:http://www.cnblogs.com/yangzhilong/p/3349116.html
文章中java代码用到了SAP的jar包,可以去BO服务器的目录上获取
J2EE项目集成SAP的BO报表的更多相关文章
- Java项目集成SAP BO
SAP BO报表查看需要登录SAP BO系统,为了方便公司希望将BO报表集成到OA系统中,所以参考网上资料加上与SAP BO的顾问咨询整理出一套通过Java来集成SAP BO的功能. SAPBO中的报 ...
- eclipse配置j2ee项目
1.下载jdk (1.5,1.6) 安装 从sun的官方网站下载,我下的是jdk-1_5_0_19-nb-6_5_1-windows-ml.exe,集成netbean的版本,下载后一路默认安装. 配置 ...
- 现有iOS项目集成React Native过程记录
在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用 ...
- J2EE项目中后台定时运行的程序
转自:http://www.2cto.com/kf/201311/260676.html 在开发J2EE项目中,有时候需要在后台定时执行一些代码. 比如定时对web数据建立倒排索引.定时发送邮件.定时 ...
- 如何正确的将J2ee项目部署到Tomcat
如何正确的将J2ee项目部署到Tomcat 1.打开配置文件(我的如下:C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\serv ...
- J2EE项目中异常处理
为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2e ...
- Vuejs实例-02Vue.js项目集成ElementUI
Vuejs实例-02Vue.js项目集成ElementUI 0:前言 vue.js的UI组件库,在git上有多个项目,我见的使用者比较多的是iView和Element.两个组件库,组件都很丰富. 官网 ...
- Maven构建真正的J2EE项目
今天同事问起我眼下用Maven构建的多模块项目架构和曾经用Eclipse创建的Web项目的问题.以下将讲一下使用maven搭建多模块的J2ee项目,以及採用这样的方式搭建项目对日后项目的水平拆分和垂直 ...
- SAP MM ME1M报表结果不科学?
SAP MM ME1M报表结果不科学? 做过SAP MM顾问的都知道,报表ME1M可以查询物料的info record列表,即是说可以以列表的形式批量显示多个物料的采购价格主数据. 但是这个报表有个不 ...
随机推荐
- Swift之沙盒与数据存储
应用沙盒结构分析 1.应用程序包:包含了所有的资源文件和可执行文件 2.Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录 3.tmp:保存应用运行时所需要的 ...
- PJ Naughter CSerialPort
来自:http://www.codeproject.com/Articles/382/CSerialPort-v-Serial-Port-Wrapper 源码下载 Features Simple an ...
- org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8' not supported
原文:https://www.cnblogs.com/yueli/p/7552888.html 最近同事在做一个图片上传功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下 ...
- 单独配置secondarynamenode
一.配置说明 这是在我之前yarn框架上通过加入节点,改动相关的配置文件,使得secondarynamenode独立出来的,所以这里前期的一系列琐碎配置请參考我之前的博客: http://blog.c ...
- .NET:通过 CAS 来理解数据库乐观并发控制,顺便给出无锁的 RingBuffer。
背景 大多数企业开发人员都理解数据库乐观并发控制,不过很少有人听说过 CAS(我去年才听说这个概念),CAS 是多线程乐观并发控制策略的一种,一些无锁的支持并发的数据结构都会使用到 CAS,本文对比 ...
- CASpringAnimation的使用
CASpringAnimation的使用 效果 源码 https://github.com/YouXianMing/Animations // // CASpringAnimationControll ...
- OpenCV学习(22) opencv中使用kmeans算法
kmeans算法的原理参考:http://www.cnblogs.com/mikewolf2002/p/3368118.html 下面学习一下opencv中kmeans函数的使用. 首先我们 ...
- 混沌数学之Lorenz(洛伦茨)吸引子
洛伦茨吸引子是洛伦茨振子(Lorenz oscillator)的长期行为对应的分形结构,以爱德华·诺顿·洛伦茨的姓氏命名. 洛伦茨振子是能产生混沌流的三维动力系统,是一种吸引子,以其双纽线形状而著称. ...
- Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现
以前用jxl.jar包,读写过Excel文件.也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽. 注意,这个只是基本可以实现,基本针对中 ...
- (转)Overview : Writing Scripts in C# 使用C#书写脚本
Apart from syntax, there are some differences when writing scripts in C# or Boo. Most notable are: 除 ...