2013-03-01 47 views
1

首先是主要问题:可以将爆炸战争添加/加载到独立的Java应用程序中吗?

我们在tomcat中有一个web应用程序,当系统试图在12点钟发送电子邮件时,它会重载并关闭。起初它只有数百个(并且服务器表现良好),但现在它已经成千上万,耗尽了一切。

我们希望在不同的JVM中“运行”这些作业。为此,我被要求创建一个独立的应用程序,加载Spring和hibernate上下文,并调用发送电子邮件和短信的方法;并通过命令行运行。但他们想要使用驻留在tomcat服务器中的相同“战争”(避免任何类型的复制)。

enter image description here

我创建通过Eclipse应用程序,当我打运行,但它的魔力。但是当我尝试通过命令行运行它时,我得到了一个N​​oClassDefFoundError,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 

如何添加这一切到类路径?

优化代码现在它不是一个选项。

+0

向我们展示如何通过命令行运行它。 – 2013-03-01 19:19:27

+0

在数据库中建立队列列出所有电子邮件,然后分批处理它们? – dlp 2013-03-01 19:23:54

+0

@dlp我提出了这个建议(批量执行),它没有超越...... :(我们正试图在内存中加载所有的电子邮件,最终这也不会起作用。他们分批,例如500邮件,它可能会更好。 – 2013-03-01 20:01:43

回答

2

你需要classpath中的几件事情:

  • WEB-INF/classes目录 - 这包含从WAR所有的自定义类
  • 所有图书馆的罐子,你的课程从您的WAR依赖
  • 所有的罐子您的命令行应用程序依赖于

编辑:基于您的更新问题

java -jar -cp ".;D:\powerfollowups\trunk\WebContent\WEB-INF\lib\*;D:\powerfollowups\trunk\WebContent\WEB-INF\classes" D:\powerfollowups\workspace\PFUReportSender\target\pwrFU-2.jar 
+0

如何将所有这些添加到类路径? – 2013-03-01 19:55:34

+0

我已经在你的问题中更新了我的回应 – codelark 2013-03-01 20:19:46

+0

这没有奏效:(可以将“资源”加载到不在jar文件中的类路径中吗? – 2013-03-04 13:12:29

相关问题