2010-07-15 61 views
1

这样做的原因是因为我想使用Runtime.exec()使用与我的servlet相同的类路径。 我想运行的类是在WEB-INF/classes/my/package /中。从servlet中获取Web应用程序类路径

所以我想建立一个cmdarray为String [] {“java”,“ - cp”,my_servlet_classpatch,“my.package.myclass”} 我只是无法找到一种方法让我的运行的servlet类路径。

注意:这必须在Tomcat或Jetty(或任何像样的servlet容器)中工作。

+0

你可以直接从你的servlet调用“my.package.myclass”吗?它是否必须在单独的过程中运行? – 2010-07-15 16:22:38

+0

@Brad,请参阅我的评论,了解我为什么要运行一个单独的过程。 – alci 2010-07-15 17:08:32

回答

1

请问getServletContext().getRealPath(...)是你在找什么?

例如,如果webapp在Linux上并且ImageMagick工具可用(并且不,我不想使用Java ImageMagick包装器),则需要执行一些图像处理。我的web应用程序有一个“图像”存储库,我的所有图像都存在于这个存储库中。我可以通过发行获得实际部署的目录:

getServletContext().getRealPath("images") 

其中给出:

/home/tomcat/apache-tomcat-6.0.26/webapps/mywebapp/download 

注意,在你的情况我不知道,你需要这样的:你真的要产生一个新的使用Runtime.exec的Java进程?

+1

是的,这就是我一直在寻找的!我想生成一个新流程的原因很具体:这个新流程本身就是一个“远程流程服务器”。它将在那里允许我启动新的进程,而不会触及fork()资源分配问题并获得oom错误,特别是在Linux内存过量使用错误的情况下。有关更好的解释,请参阅http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-May/001644.html。所以我的“远程服务器”将有一个小的最大堆空间,分叉并不意味着像我的主要servlet那样分配大量资源。 – alci 2010-07-15 16:52:05

相关问题