从 BIRT 项目中删除 BIRT 查看器以部署在 Wildfly 27 上

问题描述 投票:0回答:1

我们正在项目上使用 BIRT,该项目当前依赖于 Javax。

我们需要在 Wildfly 27 上部署并迁移到雅加达,但 BIRT 查看器依赖于尚未迁移到雅加达的 AXIS2。

我们已同意删除 BIRT 查看器模块来绕过此问题。

但是,由于不熟悉所使用的技术,该团队在实现这一目标方面收效甚微。

我们能否获得有关如何删除查看器模块并使其成功编译的明确步骤?

正在使用 Intellij IDE 而不是 Eclipse。

尝试删除整个模块,但编译失败。错误很难诊断,因为 由于 BIRT 是在 Eclipse 中开发的,intellij 代码突出显示不起作用。

java birt jakarta-migration
1个回答
0
投票

快速不规则回答:

  • 好消息,您仍然可以使用 BIRT Viewer。
  • 坏消息,你必须使用特殊的罐子。

BIRT 查看器对 javax 包的依赖。 (核心:viewservlets.jar)

基本测试

下载 BIRT 运行时

https://download.eclipse.org/birt/updates/release/latest/

解压 Birt Runtime ZIP

解压 birt-runtime-4.17.0-202409160710.zip

在 Tomcat 9 (javax) 上测试

  • JDK 17

  • apache-tomcat-9.0.96

  • birt.war
    目录中找到
    birt-runtime-4.17.0-202409160710

  • birt.war
    放入
    apache-tomcat-9.0.96/webapps

  • 启动Tomcat 9

cd apache-tomcat-9.0.96/bin
./startup.sh

打开Birt URL

http://localhost:8080/birt

000.png

enter image description here

报告1

001.png

enter image description here

报告2

002.png

enter image description here

  • 关闭Tomcat 9
cd apache-tomcat-9.0.96/bin
./shutdown.sh

迁移到 Tomcat 10.1(雅加达)

  • JDK 17

  • apache-tomcat-10.1.31

  • 在apache-tomcat-10.1.31下创建目录

    webapps-javaee

  • birt.war
    放入
    apache-tomcat-10.1.31/webapps-javaee

  • 启动Tomcat 10

cd apache-tomcat-10.1.31/bin
./startup.sh

打开Birt URL

http://localhost:8080/birt

enter image description here

报告1

与 Tomcat 9 相同

报告2

与 Tomcat 9 相同

  • 关闭 Tomcat 10
cd apache-tomcat-10.1.31/bin
./shutdown.sh

enter image description here

修改了apache-tomcat-10.1.31/webapps/birt/WEB-INF/lib中很多jar文件的内容。

示例之一:viewservlets.jar

  • viewservlets.jar
    • org/eclipse/birt/report/servlet/ViewerServlet.class

导入包名称为

jakarta.servlet.ServletConfig
,

package org.eclipse.birt.report.servlet;

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.context.BirtContext;
import org.eclipse.birt.report.context.IContext;
import org.eclipse.birt.report.presentation.aggregation.IFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.RunFragment;
import org.eclipse.birt.report.service.BirtReportServiceFactory;
import org.eclipse.birt.report.service.BirtViewerReportService;
import org.eclipse.birt.report.service.api.IViewerReportService;
import org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet;
import org.eclipse.birt.report.utility.BirtUtility;

public class ViewerServlet
extends BirtSoapMessageDispatcherServlet {
...

  • viewservlets.jar
    • org/eclipse/birt/report/servlet/ViewerServlet.class

这是原始的、未经修改的 Birt Viewer Server 代码:

导入包名称为

javax.servlet.ServletConfig
,

package org.eclipse.birt.report.servlet;

import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.context.BirtContext;
import org.eclipse.birt.report.context.IContext;
import org.eclipse.birt.report.presentation.aggregation.IFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.RunFragment;
import org.eclipse.birt.report.service.BirtReportServiceFactory;
import org.eclipse.birt.report.service.BirtViewerReportService;
import org.eclipse.birt.report.service.api.IViewerReportService;
import org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet;
import org.eclipse.birt.report.utility.BirtUtility;

public class ViewerServlet
extends BirtSoapMessageDispatcherServlet {
...

现在您已经有了支持 jakarta 的 BIRT Viewer 的相关 jars

好消息,您仍然可以使用 BIRT Viewer。

现在您已经有了支持 jakarta 的 BIRT Viewer 的相关 jars

坏消息,你必须使用特殊的罐子

您必须使用修改后的jar文件。它们位于 apache-tomcat-10.1.31/webapps/birt/WEB-INF/lib 目录中。您的项目必须复制这些修改后的 jar 文件。其中有 105 个文件。修改(与apache-tomcat-9.0.96/webapps/birt/WEB-INF/lib下的jar文件对比后的结果)。

如果您最终仍然决定不使用 Birt Viewer,也没关系。答案很简单。只提供 PDF 格式的 BIRT 报告是完全可以的,但 HTML 格式的 BIRT 报告在某些格式中仍然可能会导致错误。 (但这是另一个答案。)

© www.soinside.com 2019 - 2024. All rights reserved.