最近一个项目用到了SAP的businessObjects,需要进行二次开发,今天开发了登录接口,遇到了一些问题,进行了解决,现在分享一下。
1、依赖jar包的添加
bo登录需要用到一些jar包,具体在bo安装目录的Tomcat55webappsVoyagerClientWEB-INFlib下,我们用到的版本是3.X,目录仅供参考。
2、登录代码编写
// ip:port, port一般是6400 String CMS = "*.*.*.*:6400"; // 登录的用户名 String userID = "username"; // 密码 String password = "password"; // 认证类型: secEnterprise String auth = "secEnterprise"; IEnterpriseSession enterpriseSession; try { ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr(); enterpriseSession = sessionMgr.logon(userID, password, CMS, auth); /* 其中createLogonToken(java.lang.String clientComputerName, int validMinutes, int validNumOfLogons) clientComputerName为使用这个token的客户端计算机名,空字符串表示该token可被任何客户端使用; validMinutes为token的有效时间(分钟); validNumOfLogons 表示该token允许被使用的最大次数。*/ String token = enterpriseSession.getLogonTokenMgr().createLogonToken("", 1, Integer.MAX_VALUE); } catch (SDKException e){ e.printStackTrace(); return; }
拿到token了之后就可以进行url的拼接,做其他操作了,如:http://10.6.4.170:8080/BOE/OpenDocument/opendoc/openDocument.jsp?sIDType=CUID&sType=wid&iDocID=AQa.zJ7BBUBAolv5NdN3X2A&lsSP_DATE=20180415&token=BIPRD0:6400@129477Jg4Sy5pocBTNao8qOGGws6j129475J1JhLhH8z4qO7A6adlV4R1hONEOFF
3、报错说明
登录时候一直报一个
com.crystaldecisions.enterprise.ocaframework.OCAFrameworkexception$CommunicationError:尝试连接服务器BO1:6400时出现通信错误(FWM 01009)
......
的错误,找了很多资料,ping BO1和telnet BO1 6400都可以通,最后发现,是BO1服务器上的hosts文件还有其他的主机名配置,后来把服务器上的hosts文件中的关于服务器的IP的配置拷贝到做项目的服务器上,就好了。
所以这个问题解决要看服务器是否能ping通,端口是否可以访问,hosts文件是否需要配置。