使用SDK客户端报告Business Objects Enterprise会产生异常

时间:2010-05-12 12:17:47

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

我们有一个客户端使用SDK来调用Business Objects嵌入式报表服务器上的报表。我们可以登录,但是在调用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

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

此致 卡尔

2 个答案:

答案 0 :(得分: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中描述)并三重检查是否正确进行了防火墙打开来解决了这个问题。

答案 1 :(得分:0)

我猜你正在使用的ReportEngine变量reportAppFactory对于你试图打开的文档类型是不正确的。

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

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