【问题标题】:Integrating DB2 license in standalone JAR application在独立 JAR 应用程序中集成 DB2 许可证
【发布时间】:2018-05-29 07:26:05
【问题描述】:

我开发了一个用于读取数据库表的小实用程序,我正在尝试访问 DB2 表。我正在使用 DB2 for z/OS,我的应用程序是一个独立的 JAR 文件,您必须使用 java -jar 在命令行中执行它。另外,我有从 DBA 收到的db2jcc_license_cu.jar 许可证。我已经尝试在我的 JAR 应用程序中打包此许可证,但我总是收到此错误:

[jcc][t4][10509][13454][4.21.29] Connection to the data server failed. The IBM Data Server for JDBC and SQLJ license was invalid 
or was not activated for the DB2 for z/OS subsystem. If you are connecting directly to 
the data server and using DB2 Connect Unlimited Edition for System z, perform the 
activation step by running the activation program in the license activation kit.  
If you are using any other edition of DB2 Connect, obtain the license file, 
db2jcc_license_cisuz.jar, from the license activation kit, and follow the installation 
directions to include the license file in the class path. ERRORCODE=-4230, SQLSTATE=42968

连接 url 是 jdbc:db2://<server>:<port>/<schema_name>:progressiveStreaming=2;,应该是 Type 4 连接。我正在使用通用 DB2 驱动程序。我不知道包含许可证 jar 是否足以使事情正常运行,或者我是否需要更多的东西,例如加载许可证或类似操作。

任何帮助将不胜感激。

【问题讨论】:

  • 您的问题不完整,因为您没有说明您是要直接到 Z/os,还是间接(通过网关软件产品,例如 Db2-connect)。此选择确定所需的操作,如消息所示。如果您不知道是哪个,请询问您的 DBA。
  • 我只使用 JDBC 驱动程序。我不知道我是不是直接去,我的 DBA 给了我许可证,并说我必须将它包含在我的应用程序中。
  • 信息不够。 强制知道您是尝试直接连接到 z/OS 还是间接连接因为需要不同的许可活动。回去和你的 DBA 谈谈。

标签: java jdbc db2


【解决方案1】:

据我所知,db2jcc_license_cu.jar 需要位于应用程序的类路径中,以便 JDBC 驱动程序获取它。

当您在命令行上使用java -jar ... 启动您的应用程序时,can't specify additional jarfiles。

所以你有两个选择:

  1. 在构建应用程序的 jar 文件时,将 db2jcc_license_cu.jar 包含在您的 MANIFEST.MF 中。然后你需要把它放到与清单中引用的其他 jar 文件相同的位置。

  2. 使用 -cp 参数启动您的应用程序指定所有 jar:

    java -cp yourjar.jar;db2jcc4.jar;db2jcc_license_cu.jar your.main.Class
    

请注意,上面的示例使用 Windows 路径分隔符。如果您在 Linux 上运行应用程序,则需要使用 : 而不是 ;

【讨论】:

  • 只是一个问题:使用 Maven,我使用 maven-assembly-plugin 构建了我的应用程序,并带有 jar-with-dependencies 描述符。它应该与您向我建议的选项相同,但我仍然得到那个例外。我错过了什么吗?
  • @Lorelorelore:清单中是否列出了许可证 jar?如果是,它是否存储在运行时可以找到的位置?
  • 目前许可 jar 包含在我的应用程序 jar 中。所有其他依赖项都加载没有错误。然后没有一个条目在类路径中。不过,我会尝试你建议我的第一个选项。
  • 您不能在 jar 中包含 jar(除非您“分解”嵌入的 jar)。
  • 是的,我“爆炸”了它。
【解决方案2】:

如果您使用的是 Eclipse IDE,它包含将项目构建为单个 JAR 文件(导出为可运行 JAR)的工具:

How to create a jar with external libraries included in Eclipse?

【讨论】:

    【解决方案3】:

    我花了 4 个小时尝试这样做,最后我使用了 jt400.rar,效果非常好!

    【讨论】:

      猜你喜欢
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      相关资源
      最近更新 更多