使用 JTOpen 进行 RPG (iSeries) 现代化 - 有什么可能?
我们将在不久的将来实施一个解决方案来实现 iSeries 应用程序的现代化 编写为带有一些存储过程的 RPG 程序,我们的首选方式是利用 Java 在该领域提供的最新、最强大的功能。
通过谷歌搜索并检查 STOVFlow 上的其他问题,JTOpen 似乎是事实上的 对大多数人来说都有效的库/工具集,我很高兴看到 Tomcat 在 I 系列机器上运行而没有任何问题。
以此为背景,我将以下内容视为高级 sol arch
- 安装 IBM JRE 并使用 JTOpen 的功能来调用 RPG 程序,并在某些情况下直接调用在 DB2 上运行的存储过程
- 让 Tomcat 托管使用以下命令构建的现代 Web 应用程序Grails 和其他框架(Camel、Smooks)提供一个应用程序逻辑层,该层将填充从浏览器向用户提供旧功能所需的任何中介和转换
问题 -
- 如果你们中的任何一个人参与过这样的练习,请分享这种方法的陷阱
- 最终用户的响应时间是否会显着降低性能?
- 对于某些人来说,如何将 JT400 代码公开为 Web 服务并在完全使用这些 Web 服务的另一台计算机上运行 Web 应用程序会更好吗?
We would be in near future implementing a solution to modernize our iSeries applications
written as RPG programs with some stored procedures, and our preferred way is leveraging the latest and greatest of what Java has to offer in this space.
From googling and checking other questions here on STOVFlow, JTOpen seems to be the defacto
library/toolset which has worked for most and I was encouraged to see that Tomcat runs on an I-series box with out any issues.
With this as the background, I am thinking of the following as the high level sol arch
- Install IBM JRE and use JTOpen's capabilities to invoke RPG Programs and in some cases directly call the stored procedures running on DB2
- Have Tomcat host a modern web application built using Grails and other frameworks (Camel, Smooks) to provide an application logic layer which would fill any mediations, transformations required for the old functionality to be offered to the user from a browser
Questions-
- If any one of you has been involved in such an exercise, please share the pitfalls with this approach
- Is there a significant performance drop with respect to response times for the end user?
- Would it be better to some how expose the JT400 code as web services and run the web app on a different machine altogether consuming these web services?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从 Java 调用 RPG 时要非常小心,因为如果不进行一些更改,RPG 不是线程安全的。
Be very careful with calling RPG from Java because RPG is not threadsafe without some changes.
当我在COMMON时,我感觉市场上最好的产品是Profound UI。还有来自不同供应商的其他一些产品。大多数这些产品不使用 Java。 i 上的 Java 往往很慢。 (可以采取一些措施来使其更快,但原生总是更快。)您将为这些产品付出代价,但想象一下您自己做这件事会花费多少时间。对于上述内容,我的报价在 20+ 千美元范围内。但与所有 i 产品一样,价格因系统而异。
直接回答你的问题:
When I was at COMMON, the best product I felt on the market was Profound UI. There are several others from a variety of vendors. Most of these products do not use Java. Java on the i tends to be slow. (There are things that can be done to make it faster, but native is always faster.) You'll pay the price for these products, but just imagine how much time it would take you to do this yourself. For the above, I was quoted in the $20+ thousand range. But like all i products prices vary greatly based on system.
To directly answer your questions:
我发现,出于所有实际目的,AS/400 的行为就像从 Java 代码中看到的 AIX 机器一样,并且您必须使用 jt400 (jtOpen) 与 AS/400 特定功能(如数据队列、文件等)进行通信。这非常有效好吧,但是调用 JVM 的速度很慢,这迫使基于 Java 的解决方案需要长时间运行。
另请注意,由于预启动作业的性质,QTEMP 通常不可用作保持状态的机制。
在 V6R1 下,Java 6 可用并且在“新技术”版本中运行得很好。然后,您可以运行几乎所有基于 Java 的解决方案,包括其中的 Jetty 等 Web 服务器。请注意,直接访问 IFS 文件时,Java 默认使用代码页 819。使用 AS/400 作为网络驱动器的 Windows 客户端使用兼容的代码页。
I've found that for all practical purposes an AS/400 behaves like an AIX box seen from Java code, and you must use jt400 (jtOpen) to communicate with the AS/400 specific features like data queues, files etc. This works pretty well, but the slowness of invoking the JVM pressures Java based solutions to be long running.
Note also that QTEMP is generally unavailable as a mechanism to keep state due to the nature of prestarted jobs.
Under V6R1 Java 6 is available and runs pretty well in the "new technology" edition. You can then run almost all Java based solutions, including web servers like Jetty in it. Note that Java defaults to code page 819 when accessing IFS files directly. Windows clients using AS/400 as a network drive uses a compatible code page.