2010-05-12 84 views
0

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

代码:

 //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 

登录时明显作品的通信,请让我知道如果你有任何意见或知道在哪里可以去寻找答案。 :)

问候, 卡尔

+0

reportAppFactory是什么? – shrub34 2010-05-12 13:59:36

回答

0

我要去猜测,您正在使用的ReportEngine,您的变量reportAppFactory,是不是你正在试图打开文档的类型正确。

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

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

+0

嗨! 感谢您的回复。我已经更新了一些更详细的代码。我试图运行一个Crystal.rpt文件。它已被上传到BO知识库并发布。 /Karl – 2010-05-14 05:49:05

+0

我最近的更新让你明智吗? 读取报告应该传输时沟通改变端口的地方。在所有的API调用中发生了这种情况?然后使用哪个端口? – 2010-05-17 10:10:44

+0

它确实给了我更多的清晰。端口变化应该从系统中抽象出来。只要您的会话正确,系统的其余部分将自行确定其端口。你所做的一切看起来都是正确的;您是否已验证Crystal Server(CMC内部)是否正在运行并已启用,并且您的会话所用的用户是否可以使用它?我可能已接近我的知识结束,因为我没有使用过,也没有安装过Crystal。 – shrub34 2010-05-17 13:49:53

1

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

相关问题