2014-09-27 39 views
1

我想混合一個標準的J2EE應用程序和播放網絡套接字。兩者都是用Scala編寫的。如何將Java Servlets與Play框架Web套接字混合?

我設法使用我的J2EE Scala代碼來編譯Play網絡套接字代碼,其中包括來自Play框架發行版的一些jar。但是,我無法弄清楚如何讓Play的網絡套接字處理程序來監聽連接。
我通常使用運行碼頭(java -jar jetty-runner.jar myapp.war

我不介意通過play run只要我可以同時使用Servlet和播放的網絡插座運行的應用程序的應用程序。

有沒有比在不同容器中運行兩個應用程序更好的解決方案?

J2EE應用程序使用HTML,JSP,Servlet和JDBC。

+0

你可以擴展你的動機嗎?最簡單的方法是將應用程序分開,並讓nginx跨所有HTTP服務器提供「統一的HTTP前端」。 – 2014-09-28 10:01:12

+0

@AndrewE我有一個完全開發的J2EE應用程序,我想爲它添加一些websocket功能。我比較喜歡Play的代碼,因爲它非常乾淨。但是,我不想Play'我的整個應用程序,因爲這將需要太多的努力。 – Jus12 2014-09-29 05:33:14

+0

嗯。我不會建議玩你的整個應用程序,而只是保持核心競爭力:你的J2EE應用程序保持原樣,並添加一個新的小型播放websocket應用程序。在前面使用nginx,以便呼叫者擊中一個主機:端口;一些URI指向J2EE,一些指向Play/WS。承認這有利有弊,但它使事情變得簡單,獨立和清晰。 – 2014-09-29 08:44:46

回答

1

Play使用sbt構建系統。我認爲最簡單的方法是實現你的目標,通過堅持使用sbt來編譯和構建兩者--Servelet項目和play2項目。如果目錄是configured properly,Sbt編譯scala和java源碼就好了。由於play2已經生成a proper sbt build config,所有你需要的就是將servlet構建配置連接到它。 Sbt有幾個插件用於特殊任務,在這種情況下,您可以使用x-sbt-webplugin