gpt4 book ai didi

spring - 为什么Websphere 不喜欢BIRT?

转载 作者:行者123 更新时间:2023-12-04 19:13:02 26 4
gpt4 key购买 nike

我正在尝试将项目部署到 Websphere,但出现以下错误线索。 (缩短)

ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birtView' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'birtEngine' while setting bean property 'birtEngine'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birtEngine': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: Could not start the Birt engine!
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birtEngine': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: Could not start the Birt engine!
Caused by: java.lang.RuntimeException: Could not start the Birt engine!
Caused by: org.eclipse.birt.core.exception.BirtException: error.CannotStartupOSGIPlatform
Caused by: org.eclipse.birt.core.framework.FrameworkException: Cant register the ExtensionRegistry classpath
Caused by: org.eclipse.core.runtime.CoreException: Extension registry provider is already set.

我在网上找到的从底部开始的第三个错误的解决方案是删除以下代码行。
config.setEngineHome("C:/birt-runtime-3_7_0/ReportEngine");

但是,这对于我们的设置不存在且不必要。
它(使用的 BIRT 特定代码)与在线示例非常相似:

http://www.springsource.org/BusinessIntelligenceWithSpringAndBIRT

BirtView 和 BirtEngineFactory 是我的项目唯一相关的部分。
我去了这个错误页面和论坛条目并尝试了代码添加。这没用。该项目启动并在 Tomcat 6x 上运行,没有任何问题。

http://www.eclipse.org/forums/index.php/m/727929/

https://bugs.eclipse.org/bugs/show_bug.cgi?id=351052

我将 Web Sphere 中的类加载器顺序设置为“首先使用应用程序类加载器加载的类”。如以下链接中的示例所示。

http://wiki.eclipse.org/BirtPOJO_Viewer_WebSphere_Deployment

我仍然遇到同样的错误,我不确定我还应该做什么。
我知道在不发布代码的情况下提出这个问题有点困难,但是有人会知道我应该寻找什么吗?
谢谢。

最佳答案

我和你的错误完全一样。我正在使用 BIRT 3.7.2 和 IBM WAS 8.5

引用下面详述的错误,
org.eclipse.core.runtime.CoreException when restarting the ReportEngine

以及错误的实际原因,如下所述,
ServiceLauncher.shutdown() doesn't release default RegistryProvider

我在 Platform.startup(..) 之前添加了以下行称呼
RegistryProviderFactory.releaseDefault();
在此之后,BIRT 报告工作正常。

但是,我怀疑这是否会破坏 WAS 的运行时中的任何内容。
这样做的原因是...

如错误中所述,当第二次尝试启动平台时会发生此异常。在这里,在 Platform.shutdown() 上,RegistryProvider 没有被释放,因此是异常(exception)。

现在,就我而言,IBM Websphere 8.5 在内部使用 OSGi,因此启动了 OSGi Platform。
因此,当我们的应用程序尝试再次启动平台(第二次启动)时,就会发生异常。
我担心的是,这不应该破坏 WAS 的运行时的任何内容(因为它在内部使用 OSGi)。

Registry Provider 不是 null,因为它是由 BIRT 运行时设置的,因此,这里唯一的问题可能是类版本不匹配,即 WAS 的 Registry Provider 和 BIRTs Registry Provider,如果不同,则版本冲突。

我不确定我使用的解决方案。
请高手指导。

关于spring - 为什么Websphere 不喜欢BIRT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com