JDK 6:有没有办法运行一个新的java进程来执行指定类的main方法
我正在尝试开发一个应用程序,在退出之前必须运行一个新的守护程序进程来执行类的main方法。
我要求在主应用程序退出后,守护进程仍然必须执行。
它是在Oracle DB上运行的Java存储过程,因此我无法使用Runtime.exec,因为我无法从操作系统Shell中找到java类,因为它是在数据库结构而不是文件系统文件中定义的。
特别是期望的行为应该是在远程数据库会话期间我应该能够
调用运行守护程序进程的第一个java方法并退出,使守护进程处于执行状态
然后(让守护程序进程和会话控制,因为最后一次调用终止)因此
调用与守护进程通信的方法(最终在通信结束时退出)
这可能吗?
谢谢
更新
我确切需要创建并加载(达到最佳性能)大文本文件到数据库中,假设主机没有使用JDBC-11G oci驱动程序连接到Oracle 11gR1 DB的Java JDK6客户端应用程序的文件传输服务。
我已经通过调用一个过程来开发一个工作解决方案,该过程将LOB(大型数据库对象)存储到文件中作为输入,但是这样的方法使用了太多我想避免的中间结构。
所以我考虑在第一次调用时在DB上创建一个ServerSocket,然后连接到它并通过直接和快速的通信建立数据传输。
我遇到的问题出来了,因为创建ServerSocket的java过程无法退出,并且正在执行的线程/进程监听该Socket和客户端,以确保已创建ServerSocket,无法运行单独的线程处理剩下的工作。
希望明确
没有找到相关结果
已邀请:
3 个回复
抽法
焙恍挝厂熄
夏瓤跋棘
(或者它更方便的包装器,
)。如果这不起作用,你就是SOL,除非你可以使用本机代码来实现等效功能(在这里提出另一个问题来学习如何在C ++级别启动子进程),但这至少会像使用本机代码那样容易出错。标准方法。 如果像Oracle这样的应用程序服务器允许您访问启动子进程或加载本机代码的功能,我会感到震惊;两者都可能导致巨大的恶作剧,因此不受信任的代码被禁止。查看您的编辑,您最好的方法是重新思考如何解决您的真实问题,例如,通过使用NIO以更有效的方式管理套接字(并尝试不在磁盘上创建额外的文件;您将只是必须加入额外精心设计的代码来清理它们......)