![](/img/trans.png)
[英]How to deploy Java standalone application on JBoss along with other web applications
[英]Java web application calling different other Java applications (workers)
不確定理解得很好,但是您可以看一下消息傳遞機制。 通常,WebApp將發送一條消息,所有工作人員都會收到該消息。
看一看JMS ,它是為這種使用而設計的,並且與JEE(它是JEE規范的一部分)和Spring很好地集成在一起的。
您可以使用spring的httpInvoker
或rmiInvoker
輕松將Java應用程序與其他應用程序連接。 此處提供更多信息: http : //docs.spring.io/spring/docs/current/spring-framework-reference/html/remoting.html
您的問題基本上分為兩部分:
作業調度
在Java EE環境中進行作業調度的技巧是,您通常在群集或多個服務器中運行作業。 因此,一次只能代表集群一個節點運行該作業,否則,對於同一件事,您將多次調用這些遠程資源。
為此,有一個標准JSR-237 ,它涵蓋了Timers和WorkManagers。 每個Java EE供應商都有自己的實現。 WebLogic有一個 , WebSphere有一個 ,而JBoss有一個 (JBoss不與JSR兼容,但功能相同)。
如果運行的服務器之一僅運行Java EE規范的Web層(即Tomcat或Geronimo),則Quartz是一個不錯的選擇。
如何從定時作業中調用遠程服務
與@Alexandre Cartapanis的回答相呼應,可能您想做的就是在Java EE服務器中創建一個JMS主題 ,然后在作業運行時向該主題發布消息。 遠程服務(無論Java EE服務器如何)都訂閱了該主題,然后您可以運行查詢。
這里的最大優點是,如果您需要添加另一個需要填充本地數據庫的服務,那么您要做的就是讓該服務器訂閱該主題-無需更改代碼。 使用JSch或遠程處理,每次新服務上線時都必須更改代碼。 如果DNS地址或IP地址發生更改等,您還必須更改代碼,而JMS方法只是在服務器上進行配置。 JMS可以做很多事情,而且全面的支持要好得多。
Spring有用於Quartz的適配器,我認為那里也有一個用於WorkManagers和Timers的適配器。
您可以使用JSch - Java Secure Channel
來觸發遠程ssh調用,這些調用可以啟動JVM並運行Worker類。
這里有些例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.