2014-12-03 34 views
0

我有興趣將Actor插入到bean中,而演員將在Spring中創建。另外,我正在尋找方法來定製Akka配置文件路徑。在Tomcat7下將Akka與Spring集成到Java web應用程序項目中

我的項目使用Java 7和spring 3.2.5,akka版本是2.3.7。

我讀了一些文件和指南,指導建立在我的Spring bean配置文件中的bean定義如下:成功地按照默認配置彈簧產生

<bean id="system-actor" class="akka.actor.ActorSystem" factory-method="create" destroy-method="shutdown" scope="singleton"> 
    <constructor-arg value="MyApp" /> 
</bean> 

系統演員。 問題:

  • 我想根據/WEB-INF/application.conf文件對系統進行初始化的演員,我添加了-Dconfig.trace =負載系統屬性,以調試配置加載,這是輸出:從類加載器WebappClassLoader 上下文

    加載配置:/ MY-APP 委託:假 庫: /WEB-INF /類/ ---------->父類加載器: [email protected] 但沒有名爲application.conf的資源 異常加載application.conf:java.io.IOException:在類路徑中找不到資源:application.conf 從類加載器加載配置WebappClassLoader 上下文:/ MY-APP 委託:假 庫: /WEB-INF /類/ ---------->父類加載器: org.apache.catalina.loader.StandardClassLoader @ 992f73 但沒有名爲application.json的資源 異常加載application.json:java.io.IOException:在類路徑中找不到資源:從類加載器WebappClassLoader 上下文application.json 加載配置:/ MY-APP 委託:假 庫: /WEB-INF /類/ ---------->父類加載器: [email protected] 但沒有名爲application.properties的資源 異常加載application.properties:java.io.IOException:在類路徑中找不到資源:application.properties 未找到'application '與任何擴展名(.conf,.json,.properties);但'申請'被允許丟失。應該在上面記錄加載嘗試的例外情況。 從URL加載配置jar:file:/var/work/MY-APP/jakarta-tomcat/webapps/MY-APP/WEB-INF/lib/akka-actor_2.10-2.3.7.jar!/reference.conf從類加載器WebappClassLoader 上下文:/ MY-APP 委託:假 庫: /WEB-INF /類/ ---------->父類加載器: org.apache.catalina。 [email protected]

  • 有沒有辦法將此路徑傳遞給系統actor bean?

  • 有一種方法可以在春季創建演員豆而不是注入系統演員並使用system.actorOf(Props.create(MyActor.class), "name");?詳細的例子會很有幫助。

  • 許多simillar問題的答案都指向這篇文章:http://blog.nemccarthy.me/?p=272但是這個頁面處於脫機狀態,有人知道這裏寫了什麼?

回答

0

Q1

你明確地定義,其中conf文件存儲,通過默認的根類路徑目錄進行掃描,WEB-INF/classes

-Dconfig.resource=/dev.conf 

Q2

遵循的模式介紹在​​中,您可以完全使用該存儲庫中的代碼或者使用您自己的定製邏輯進行定製。 (遲早你會uderstand爲什麼你需要定製)

你需要記住,擴展需要與ctx

SpringExtProvider.get(system).initialize(applicationContext); 

被初始化,那麼你就可以把它包裝成你想要的,處理簡單的演員創造:

ActorRef counter = system.actorOf(
     SpringExtProvider.get(system).props("quartz"), "quartz"); 

或更復雜的情況下,與單:

ActorRef quartzCoordinator = getContext().actorOf(ClusterSingletonManager.defaultProps(SpringExtProviderget(getContext().system()).props("quartz"), "quartz", 
       PoisonPill.getInstance(), "core"), "coordinator"); 

Q3

Bounty ;)

+0

我添加的配置負載日誌,僅WEB-INF /類掃描。 – 2014-12-03 14:27:11

+0

你是對的,默認情況下只掃描根類路徑目錄,你可以使用資源道具或擴展類路徑配置 – hicolour 2014-12-03 14:34:24

相關問題