我在如何動態地添加一些web服務而苦苦掙扎。我正在使用Scalatra來構建web服務框架。即時編譯Scala類以實現web服務
我想讓開發人員能夠更改身份驗證,例如,以便不使用硬編碼的憑據,而是使用數據庫或密碼文件或他們所需的任何內容。
我也想讓他們在servlet中添加新的webservices。
所以,我想要做的是在引導代碼中加載並重新編譯該類,然後使用該版本。
我看了這個,但我需要重新編譯整個類,而不是片段。
Generating a class from string and instantiating it in Scala 2.10
這是我已經盡力了,但我添加了一個「/幫助」 web服務,但沒有找到,所以新的類沒有被尚未使用。
class ScalatraBootstrap extends LifeCycle {
override def init(context: ServletContext) {
val sourceDir = new java.io.File("C:/Temp/MyServlet.scala")
val sse = ScalaScriptEngine.onChangeRefresh(sourceDir)
sse.refresh
println("*** - " + sse.compilationStatus.startTime + " " + sse.compilationStatus.stopTime)
context.mount(sse.get[MyServlet]("test.proj.MyServlet"), "/*")
我使用的那一刻scalascriptengine(https://code.google.com/p/scalascriptengine/)。
那麼,如何在Web服務中重新編譯類文件,當它可能在同一個文件中有實例類,註釋和對象類時,
我想知道是否需要在Groovy中使用webservice,但我更願意保持它的功能。
UPDATE
我曾想過插件第一,但如何將添加新的Web服務這樣碰到一個問題,它可能是Scalatra的是不會是正確的選擇,我可能需要更改我的REST服務框架。
最終,我希望能夠在不需要重新啓動應用程序的情況下即時更改Web服務,並且重新編譯源代碼將允許這樣做。
我建議一個插件方案,而不是源編譯方法。 –
@RandallSchulz - 我如何做一個實際添加新的webservices的插件方案?例如,我一開始沒有「/ help」作爲web服務,但我想添加它。插件是我的第一個想法,但我堅持添加新的Web服務。 –
@RandallSchulz - 如果你把你的評論作爲答案,我會給你信貸。 –