问题标签 [jt400]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - jt400如何打印?
是否可以使用 jt400 库通过 as400 打印?
我需要在 as400 上创建一个假脱机文件,然后将其发布到打印机吗?
谁能指出我正确的方向,谷歌上没有很多资源
到目前为止,我只能检索连接到 as400 的打印机列表并使用com.ibm.as400.access.ISeriesPrinter
类获取它们的属性
ibm-midrange - 从 IBM i 文件创建 IBM i Java Toolkit RecordFormat
jt400 RecordFormat 对象是否可以通过指向带有路径的 System i db 文件来创建?
我可以创建 RecordFormat 并添加字段定义,但我只想说“创建一个 RecordFormat,就像那个库中的那个文件一样”
在查看 RecordFormat 和 Record 类时,我没有看到类似的东西。
java - AS400 system connection with JNDI
I can figure out how to connect to an AS400 through jt400 with JNDI resources just fine:
However, another part of the application utilizes DataQueues (from the same jt400 library):
Inside of this working code for DataQueues references server, user, pass
, which isn't ideal.
I'd like to utilize the AS400 JNDI connection I already set up, but every example I see about connecting Java to DataQueues references an example much like this one.
The documentation all seem to point to AS400 system objects which are hard-coded references to servername, user, pass, etc.
Is there better way to utilize DataQueue()
with a JNDI reference?
java - 通过 jt400 将文本文件写入 IFS 的问题
我要做的就是在 IFS 上删除日志
这是我的代码:
当我通过 jt400 库阅读它时,结果还可以。
但是当我去想qShell
或wrklnk
文件似乎是空的。
任何想法为什么?是赛迪吗?
jdbc - JDBC 语句池与 DB2 没有显着的时间差异
我正在使用JDBC db2 driver(又名 JT400)连接到Application System/400上的 db2 服务器,这是一个中端计算机系统。
我的目标是insert into
三个表,来自 IBM 大型机之外,这将是云实例(例如 Amazon WS)。
为了让性能更好
1)我正在使用已经建立的连接来连接到 db2。(使用org.apache.commons.dbcp.BasicDataSource
或com.ibm.as400.access.AS400JDBCManagedConnectionPoolDataSource,两者都工作正常。)
2)我想缓存insert into
所有三个表的语句,这样我就不必每次都发送查询并每次编译,这很昂贵。相反,我只会传递参数。(显然我正在使用JDBC prepared statements
)
根据 IBM 官方文档Optimize Access to DB2 for i5/OS from Java and WebSphere,第 17-20 页 - 启用扩展动态支持,可以使用 缓存语句AS400JDBCManagedConnectionPoolDataSource
。
但是,问题是insert into
每次都在编译查询,这是200ms * 3 queries = 600ms
每次都需要的。
我正在使用的示例,
带有插入命令的状态如下所示,
所以流程是每次接收到一个事件(例如CustomerOrder
)时,它会获取已建立的连接,然后要求状态初始化它们statement
的 s。
计时指标如下所示,
对于第一个事件,需要为 3 个表580ms
创建preparedStatement
s。
对于第二个事件,需要470ms
为 3 个表准备语句,这比第一个事件要少,但< 100ms
我认为它要少得多,因为它甚至不应该进行编译。
我在想的是,因为我正在关闭preparedStatement
那个特定的连接,它甚至不存在新的连接。如果是这种情况,那么在多线程环境中进行语句缓存有什么意义。
该文档有类似的示例,其中它在同一内部进行交易,connection
这对我来说不是这种情况,因为我需要同时有多个连接。
问题
基本的
Q1) DB2 JDBC 驱动程序是否在多个连接之间缓存语句?因为我在准备声明时没有看到太大的不同。(参见示例,第一个需要~600ms
,第二个需要~500ms
)
参考
ODP = 开放数据路径
SQL 包是永久对象,用于存储与准备好的 SQL 语句相关的信息。IBM iSeries Access 可以将它们用于 IBM Toolbox for Java JDBC 驱动程序。它们也被使用 QSQPRCED(SQL 进程扩展动态)API 接口的应用程序使用。
在 JDBC 的情况下,当客户端应用程序发出第一个 SQL 语句准备时,会检查 SQL 包的存在。如果包不存在,则在那时创建它(即使它可能还没有包含任何 SQL 语句)
java - 从 jtopen 创建 spooledFile
我尝试使用库 jt400 创建一个假脱机文件。
我已经完成了在 outqueue 中列出 spool 没有问题的程序,但是当我想创建 SpooledFile 对象时,我的 as400 返回一个错误
com.ibm.as400.access.ServerStartupException:无法将连接传递到服务器作业。服务器作业超时。
我不明白为什么。在 os400 上是否有关于安全性的事情要做。谢谢帮助我。
java - JDBC AS/400 FETCH FIRST [x] ROWS ONLY 不用于区分preparedStatement 缓存
我正在使用连接池连接到 AS/400。我正在尝试使用准备好的语句获取动态数量的订单。当我使用语句参数来定义要获取的最大订单数时,似乎发生了某种缓存。在第一次调用时,我得到了正确的订单数,但在接下来的调用中,即使我更改了要获取的最大订单数,我也得到与第一次调用相同的计数。如果我在每次通话时都打开一个新连接,一切正常。如果我在数据源上调用 setReuseConnections(false),一切正常。如果我删除“FETCH FIRST [x] ROWS ONLY”语句的参数并在 SQL 文本中使用占位符,用每次调用时要获取的最大订单数替换,一切正常。
正在发生什么样的缓存?我可以用另一种方式绕过它吗?这是一个错误吗?
这是一个示例应用程序,您只需要一个 AS/400 数据库即可连接!
提前致谢。
jboss - 在 JBoss EAP 7 Standalone.xml 中配置 jt400 xa-datasource
我在 c:\jboss-EAP7\modules\com\ibm\main\ 中有 as400 驱动程序文件(jt400.jar)和相应的 module.xml
这是我的standalone.xml 中的数据源配置:
我在数据源绑定中遇到以下问题:
我究竟做错了什么?请注意,使用 SQLClient(例如 DBeaver)时,使用相同的参数连接成功。
谢谢
java - java.sql.SQLException:应用程序请求者无法建立连接
我编写了一个 java 程序来连接到 AS400 DB。我正在使用 jt400-6.4.jar 连接到数据库。
我正在使用的数据库属性:
我的程序无法连接到数据库服务器,我收到以下错误。
我用谷歌搜索了这个,找不到确切的原因。
我认为 jt400.jar 将使用 8471 作为连接 DB 的端口。如果我对此端口有误,请纠正我。
我无法 ping 主机。ping host
没有返回任何响应。
我可以远程登录telnet host
。但我无法像远程登录系统一样telnet host 8471
你的帮助将是非常可观的。请帮忙。
ibm-midrange - JT400 getUsageCount 无需申请许可
在文档中,它明确指出您必须申请许可证才能获得许可证的使用次数。
getUsageCount()
返回此许可证的使用计数。返回的计数是请求此许可证时系统上针对该产品 ID、功能和版本使用的许可证数量。在调用此方法之前,必须已请求许可证。
有没有办法在不通过另一个类或对象请求许可证的情况下“getUsageCount()”?
我找不到这样的方法,但我认为它一定存在,因为您可以通过终端读取此信息而无需终端。如果它存在于表中,那么这也是一个可接受的替代方案。