5

我正在尝试开始将项目部署到 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

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

4

1 回答 1

5

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

参考下面详述的错误, 重新启动 ReportEngine 时出现 org.eclipse.core.runtime.CoreException

以及下面指定的错误的实际原因, ServiceLauncher.shutdown() 没有释放默认的 RegistryProvider

Platform.startup(..)我在通话 前添加了以下行RegistryProviderFactory.releaseDefault();

在此之后,BIRT 报告工作正常。

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

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

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

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

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

于 2013-10-29T08:41:44.780 回答