java - 从 weblogic Java EE 应用程序运行 Perl 脚本的最佳方式

标签 java perl weblogic exec solaris

我目前在 Weblogic Java EE 项目中工作,应用程序有时会执行 Perl 脚本来执行一些批处理作业。在应用程序中,脚本被调用为

Process p = Runtime.getRuntime().exec(cmdString);

虽然这是一种危险的运行方式,但在我们需要在for循环下同步执行脚本之前,它一直在正常工作。经过几次运行,我们得到 java.io.IOException: Not enough space 因为可能操作系统在 for 循环下执行时虚拟内存不足。因此,我们根本无法在服务器中运行该脚本。

我正在拼命寻找一种更安全、更好的方式来运行 Perl 脚本,我们不需要 fork 父进程,或者至少不需要吃掉所有交换空间!

规范如下:

Appserver - Weblogic 9.52  
JDK - 1.5   
OS - SunOS 5.10 
Sun-Fire-T200

最佳答案

我遇到过几次类似的事情。由于子进程是(非常大的父进程的一个分支,它可以看到它所有共享它的所有内存(使用写时复制)。我发现内核需要能够确保它可以复制所有的在 fork 子进程之前的内存页面,在 32 位操作系统上你用完虚拟头运行得非常快。

可能的解决方案:

  • 使用 64 位操作系统和 JVM,将问题推到目前为止没关系
  • 在另一个进程(如 HTTPD)中托管您的脚本,并使用 HTTP 请求调用它

关于java - 从 weblogic Java EE 应用程序运行 Perl 脚本的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9784543/

相关文章:

grails - 根 “/”上的Grails,Weblogic和重定向似乎不起作用

java - 为什么我无法使用 Spring Boot 在 Spring 上下文中获取可用的 Bean 定义?

java - 编辑 JTable 后获取选定的行和列

java - Android:自定义最近的应用程序缩略图(默认截图)

perl - 是否可以在 if 的语句修饰符形式中包含多个语句?

java - Spring+quartz 给出 java.lang.NoClassDefFoundError : weblogic/logging/LogEntryFormatter

java - 为什么 JOOQ 仅限于整数值而不是长整数?

Perl CGI 通过网络浏览器下载文件

regex -\x 在替换中不起作用

java - 在远程weblogic 12c上使用maven插件进行部署