首先是主要问题:可以将爆炸战争添加/加载到独立的Java应用程序中吗?
我们在tomcat中有一个web应用程序,当系统试图在12点钟发送电子邮件时,它会重载并关闭。起初它只有数百个(并且服务器表现良好),但现在它已经成千上万,耗尽了一切。
我们希望在不同的JVM中“运行”这些作业。为此,我被要求创建一个独立的应用程序,加载Spring和hibernate上下文,并调用发送电子邮件和短信的方法;并通过命令行运行。但他们想要使用驻留在tomcat服务器中的相同“战争”(避免任何类型的复制)。
我创建通过Eclipse应用程序,当我打运行,但它的魔力。但是当我尝试通过命令行运行它时,我得到了一个NoClassDefFoundError,Obviouly,这要感谢ClassPath引用问题。我试图把路径转到“WEB-INF”目录,但没有成功。如果这意味着运行这个应用程序,我们不在乎杀死可移植性。
C:\Program Files\Java\jdk1.6.0_38\bin>java -jar -cp ".;D:\powerfollowups\trunk\WebContent\WEB-INF\lib\*;D:\powerfollowups\trunk\WebContent\WEB-INF\clases" D:\powerfollowups\workspace\PFUReportSender\target\pwrFU-2.jar
我也试图把它放在清单的类路径,像这样:
Manifest-Version: 1.0
Main-Class: com.powerfollowups.StandAlonePFUReportSender
Class-Path: D:\powerfollowups\trunk\WebContent\WEB-INF\lib\* D:\powerfollowups\trunk\WebContent\WEB-INF\clases
如何添加这一切到类路径?
优化代码现在它不是一个选项。
向我们展示如何通过命令行运行它。 – 2013-03-01 19:19:27
在数据库中建立队列列出所有电子邮件,然后分批处理它们? – dlp 2013-03-01 19:23:54
@dlp我提出了这个建议(批量执行),它没有超越...... :(我们正试图在内存中加载所有的电子邮件,最终这也不会起作用。他们分批,例如500邮件,它可能会更好。 – 2013-03-01 20:01:43