specifyconsortium/report-runnerSpecify Report Runner Service 是一个围绕 Jasper Reports 库实现的轻量级 Web 服务包装器,专为 Specify 7 应用设计,用于报表和标签的生成与管理。该服务通过 Web 接口提供报表生成能力,无缝集成到 Specify 7 web 应用中,满足其报表功能需求。
克隆仓库:
bashgit clone <仓库地址> # 替换为实际仓库地址 cd report-runner-service
编译项目:
bashmvn compile
通过 Maven Jetty 插件启动测试服务器:
bashmvn jetty:run
localhost:8080。jetty.xml 调整端口和绑定地址(如更改监听接口以限制访问)。编辑 Specify 7 开发分支的配置文件(通常为 specifyweb/settings/local_specify_settings.py),添加或修改以下参数:
pythonREPORT_RUNNER_HOST = "报表服务所在主机地址" # 如 localhost REPORT_RUNNER_PORT = "报表服务端口" # 如 8080
重启 Specify 7 服务,Web 应用顶部任务栏将显示“报表”任务入口。
若报表中使用的字体未提供给服务,将默认使用内置 PDF 字体,可能导致显示异常(如文本截断、样式差异)。
src/main/webapp/WEB-INF/lib/ 目录。mvn compile)使配置生效。参考:创建字体扩展文件教程(按 iReport 说明操作时需包含字体变体)。
创建 SystemD 服务脚本(路径:/etc/systemd/system/specify-report-runner.service),内容如下:
ini[Unit] Description=Specify Report Runner Service Wants=network.target ConditionPathExists=/home/specify/report-runner-service # 替换为实际项目路径 [Service] User=specify # 替换为实际运行用户 WorkingDirectory=/home/specify/report-runner-service # 替换为实际项目路径 ExecStart=/usr/bin/mvn jetty:run # 启动命令 [Install] Alias=ireportrunner.service
systemctl start specify-report-runnersystemctl enable specify-report-runnersystemctl status specify-report-runner使用无头 JRE 运行时,barbecue 条形码生成库(版本 1.5-beta1)存在 bug,导致即使报表定义中启用了条形码文本显示,文本仍可能缺失。
克隆 barbecue 仓库并编译安装修复后的开发版本(1.9-dev):
bashgit clone [***] cd barbecue/barbecue mvn compile mvn install
修改本项目的 pom.xml,将 barbecue 依赖版本从 1.5-beta1 更新为 1.9-dev:
xml<!-- 原依赖 --> <dependency> <groupId>net.sourceforge.barbecue</groupId> <artifactId>barbecue</artifactId> <version>1.5-beta1</version> </dependency> <!-- 修改后 --> <dependency> <groupId>net.sourceforge.barbecue</groupId> <artifactId>barbecue</artifactId> <version>1.9-dev</version> </dependency>
重新编译项目使依赖生效:mvn compile。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务