2016-03-30 28 views
0

我有幾個JNDI資源,在我的web.xmlSpring4沒有XML - web.xml中 - 轉換爲Java

這是用於讀取外部屬性文件和路徑依賴於環境。

<resource-ref id="resourceRef"> 
    <res-ref-name>config/file</res-ref-name> 
    <res-type>java.lang.String</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 

這是JNDI JDBC數據庫定義

<resource-ref id="MyDatabase"> 
    <description></description> 
    <res-ref-name>jdbc/MyDB</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref>  

,這對老EJB(EJB2.x)

<ejb-ref id="service"> 
    <description /> 
    <ejb-ref-name>ejb/AgencyService</ejb-ref-name> 
    <ejb-ref-type>Session</ejb-ref-type> 
    <home>ejb.Home</home> 
    <remote>ejb.Service</remote> 
</ejb-ref> 

這些資源如何能夠轉化爲Java(Servlet的3.X )? 現有的應用程序正在從servlet 2.5和EJB 2.x遷移到Servlet3,Rest和EJB3。我的新應用程序使用Spring4(MVC,安全等)和OpenJPA 2.1.x.我們的設計目標不是使用「xml」(沒有web.xml,SpringContext.xml等)。

我創建的Java類,extends AbstractAnnotationConfigDispatcherServletInitializer

,這將是等效的web.xml中。

如何將resource-refejb-ref遷移到Java類?

非常感謝您的幫助!

注意: - 編輯

回答

0

對我來說,它不是很清楚你要求什麼。我會解釋一下

基本上Spring和JEE棧相互「競爭」。從你所說的話:EJB3 + JPA顯然屬於JEE棧,另一方面SpringMVC顯然來自Spring universe + spring boot顯然是在Spring陣營中。

現在,web.xml是常規彈簧應用程序(當然不包括彈簧啓動)的引導點。所以,一般來說你應該指定一個能夠加載彈簧的web偵聽器。當你在問題中標記了一個彈簧引導時,所有事情都混在一起了。用兩句話來說,spring引導確實允許用註釋來配置所有東西,但它仍然「假設」你在引擎蓋下使用彈簧。

關於資源, 如果你正在使用DAO層,你應該爲那些bean定義bean,但底線他們將被spring管理。 但是在這種情況下,不需要EJB。當然,如果你願意的話,你仍然可以在Spring DAO中使用JPA(如果他們真的需要ORM,人們傾向於直接在Hibernate中使用Hibernate,如果他們真的需要ORM,並且Hibernate實現了JPA),但無論如何它將在春季使用。

另一方面,如果你需要一個JEE堆棧,我懷疑春季啓動可以真正適合你。 JEE棧是一種被各種應用服務器支持的「一體化」捆綁軟件,從這個角度來看就是「自帶和自行組合」的解決方案。所以對於spring項目,你可以使用tomcat/jetty,這些都不是完全合規的JEE服務器。順便說一句,這正是春季啓動所要做的。

所以我覺得爲了項目的緣故,你應該決定你想成爲哪個陣營,JEE還是Spring。 這兩種技術看起來似乎很有吸引力,這些天,他們每個人都有其優點/缺點,但底線它歸結爲:

  • 春天是更加靈活和創新,你的變化更快
  • 春天是更復雜引導(不過,如果有熟悉Spring老練的開發,它不應該是一個問題)
  • JEE標準化

我知道,我的回答是有點有點模糊,但我想你說的點

希望這會有幫助

+0

我不認爲他們之間有競爭,雖然春天給你很多模板和框架。模板可以減少行代碼。框架確保模式嚴格遵循。 –