【问题标题】:Business Objects Enterprise reporting using SDK client gives exception使用 SDK 客户端的 Business Objects Enterprise 报告出现异常
【发布时间】:2010-05-12 12:17:46
【问题描述】:

我们有一个使用 SDK 调用 Business Objects Embedded Report Server 上的报告的客户端。可以登录了,但是调用openDocument方法的时候出问题了。

代码:

     //LOGON
IEnterpriseSession session = sessionMgr.logon(username, password, clusterNode,     authType);
IInfoStore infoStore = (IInfoStore)session.getService("InfoStore");

//GET REPORT OBJECT
String queryForFolder = "Select SI_ID, SI_NAME From CI_INFOOBJECTS Where SI_NAME = '" + folderName + "'";
IInfoObjects queryForFolderResult = infoStore.query(queryForFolder);
 if (queryForFolderResult.isEmpty())
 {
   throw new Exception("No Folder Found");
 }
 //report folder found
 IInfoObject reportFolder = (IInfoObject)queryForFolderResult.get(0);

String queryForFile = "Select SI_ID, SI_NAME From CI_INFOOBJECTS Where SI_NAME = '" + reportFile + "'" + " and SI_PARENTID = " + reportFolder ;

IReportAppFactory reportAppFactory = (IReportAppFactory)session.getService("RASReportFactory");
IInfoObjects queryForFileResult = infoStore.query(queryForFile);

if (queryForFileResult.isEmpty())
{
  throw new Exception("Report file not found");
}
//report found
IReport report = (IReport)queryForFileResult.get(0);

//OPEN REPORT
clientDoc = reportAppFactory.openDocument(report, 0, locale); /*row 58 in exception*/

例外:

com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException: Unable to connect  to the server: . - Server  not found or server may be down---- Error code:-2147217387 Error code name:connectServer
at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.a(Unknown Source)
at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.a(Unknown Source)
at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.a(Unknown Source)
at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.openDocument(Unknown Source)
at com.reportclient.MyReportClient.getReportFromInfoStore(MyReportClient.java:58)
... 28 more
Caused by: com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException: Unable to connect to the server: . - Server  not found or server may be down---- Error code:-2147217387 Error code name:connectServer
at com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException.throwReportSDKServerException(Unknown Source)
at com.crystaldecisions.sdk.occa.managedreports.ras.internal.CECORBACommunicationAdapter.connect(Unknown Source)
... 32 more
Caused by: com.crystaldecisions.enterprise.ocaframework.OCAFrameworkException$NotFoundInDirectory: Server  not found or server may be down
at com.crystaldecisions.enterprise.ocaframework.j.find(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.AbstractServerHandler.buildServerInfo(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.AbstractServerHandler.buildClusterInfo(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.aa.for(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.ServiceMgr.for(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.o.a(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.o.a(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.o.a(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.p.a(Unknown Source)
at com.crystaldecisions.enterprise.ocaframework.ServiceMgr.getManagedService(Unknown Source)
... 33 more

登录时通信显然有效。如果您有任何想法或知道我可以去哪里寻找答案,请告诉我。 :)

问候, 卡尔

【问题讨论】:

  • 什么是reportAppFactory?

标签: crystal-reports business-objects business-objects-sdk


【解决方案1】:

经过进一步研究,这是我发现的。第一个错误是由于使用了早期版本的 BO SDK。第二个错误“CORBA 通信失败:原因[错误号 WSAETIMEDOUT]”在 iiop 端口未打开时发生。我通过设置 SDK 侦听器端口(在文档 http://www.sdn.sap.com/irj/boc/go/portal/prtroot/docs/library/uuid/0047e5f4-3140-2b10-1bae-de175e4c741c?QuickLink=index&overridelayout=true 中描述)解决了这个问题,并三重检查是否打开了正确的防火墙。

【讨论】:

    【解决方案2】:

    我猜您正在使用的 ReportEngine,您的变量 reportAppFactory,对于您尝试打​​开的文档类型不正确。

    另一种可能性是这是一个 DeskI 报表,它正在寻找能够打开文档的连接服务器组件。

    如果您能提供更多详细信息,我会尽力提供帮助。

    【讨论】:

    • 嗨!感谢您的回复。我已经用更多细节更新了代码。我正在尝试运行 Crystal .rpt 文件。它已上传到 BO 存储库并发布。 /卡尔
    • 我上次的更新有没有让你变得更聪明?在应该传输报告时读取通信更改端口的地方。在所有 API 调用中,这发生在哪里?那么使用哪个端口?
    • 它确实让我更加清晰。端口更改应该从系统中抽象出来。只要您的会话正确,系统的其余部分就会自行确定其端口。你所做的一切看起来都是正确的;您是否验证了 Crystal 服务器(在 CMC 内)正在运行、启用并且您的会话所针对的用户是否允许我们访问?我的知识可能已经接近尾声,因为我没有使用过,也没有安装过 Crystal。
    • 更新一些jar后,客户端工作了几分钟,但没有收到任何文件。在服务器端,我们收到此错误: (.\dts \corbaclientrequestcommadapter.cpp:419): CORBA communication failure: reason[error number WSAETIMEDOUT] minor[1330577418] reqType[154] agentId=[""] ErrorLog 2010 6 1 (.\dts\corbaclientrequestcommadapter.cpp:320):向客户端重新发送结果。 reqType=154 agentId="" nRetryInterval=1000 有什么想法吗? BR卡尔
    • 如果您还没有尝试过 BOB 论坛,我现在建议您这样做forumtopics.com/busobj/index.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多