SpagoBI圆梦系列1——Metamodel Service returns null value

在创建完数据源,数据集和商业模型目录后,在我的数据中点击之前创建的模型,报错:

【后台控制台异常】

it.eng.spagobi.utilities.engines.EngineStartupExceptionTrapAction.logError: Impossible to create engine instance for document [null].
The root cause of the error is: Metamodel Service returns null value
it.eng.spagobi.utilities.engines.EngineStartupExceptionTrapAction.logError: The error root cause is: Metamodel Service returns null value
it.eng.spagobi.utilities.engines.EngineStartupExceptionTrapAction.logError: The error root cause stack trace is:
it.eng.spagobi.utilities.engines.SpagoBIEngineRuntimeException: Impossible to load jar file of metamodel [zhjfdbmodel] from SpagoBiServer
at it.eng.spagobi.tools.dataset.utils.datamart.DefaultEngineDatamartRetriever.downloadJarFile(DefaultEngineDatamartRetriever.java:123)
at it.eng.spagobi.tools.dataset.utils.datamart.DefaultEngineDatamartRetriever.retrieveDatamartFile(DefaultEngineDatamartRetriever.java:95)
at it.eng.spagobi.engines.qbe.datasource.QbeDataSourceManager.getORMDataSource(QbeDataSourceManager.java:73)
at it.eng.spagobi.engines.qbe.datasource.QbeDataSourceManager.getDataSource(QbeDataSourceManager.java:51)
at it.eng.spagobi.engines.qbe.QbeEngineInstance.<init>(QbeEngineInstance.java:86)
at it.eng.spagobi.engines.qbe.QbeEngineInstance.<init>(QbeEngineInstance.java:58)
at it.eng.spagobi.engines.qbe.QbeEngine.createInstance(QbeEngine.java:53)
at it.eng.spagobi.engines.qbe.services.initializers.QbeEngineStartAction.service(QbeEngineStartAction.java:81)
at it.eng.spago.dispatching.action.ActionCoordinator.invokeServiceBusiness(ActionCoordinator.java:209)
at it.eng.spago.dispatching.action.ActionCoordinator.service(ActionCoordinator.java:158)
at it.eng.spago.dispatching.httpchannel.AdapterHTTP.service(AdapterHTTP.java:496)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at it.eng.spagobi.utilities.filters.AntiInjectionFilter.doFilter(AntiInjectionFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at it.eng.spagobi.utilities.filters.SpagoBIAccessFilter.doFilter(SpagoBIAccessFilter.java:190)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at it.eng.spagobi.utilities.filters.EngineCheckSessionFilter.doFilter(EngineCheckSessionFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at it.eng.spagobi.utilities.filters.EncodingFilter.doFilter(EncodingFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: it.eng.spagobi.utilities.engines.SpagoBIEngineRuntimeException: Metamodel Service returns null value
at it.eng.spagobi.tools.dataset.utils.datamart.DefaultEngineDatamartRetriever.downloadJarFile(DefaultEngineDatamartRetriever.java:120)
... 44 more


【分析】

1.百度上搜索不到任何有价值的东西

2.google上搜出一两篇,结果只有提问,没有解答!看到这些提问觉得挺好笑的——看来SpagoBI能用好的实在太少!

3、后来进行代码debug跟踪,发现问题出现是因为没有在SBI_META_MODELS_VERSIONS这张表中创建对应的记录,通过仔细的代码阅读,发现问题源自商业模型目录创建,是因为需要上传模型jar包才行(这么重要的信息,页面居然没有强校验或者提示,汗)!看看官方例子就知道了。



【解决方案】

怎么创建这个jar包呢,搜索一番发现了一片好文章,《spagobi_server_Create+the+datamart》,照着做就可以了。

然后重新导入这个jar包,即可。

至于里面需要填写的相关元数据,后续有空再补上吧。


文章结束。


chanson 2017-06-09 厦门

猜你喜欢

转载自blog.csdn.net/cysunc/article/details/72955934