<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Tauruser

    JSF will hibernate in spring.

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      24 隨筆 :: 2 文章 :: 19 評論 :: 0 Trackbacks

    把mgscl更名為mgsclp后,文哥就跟我說項目在他的Eclipse里Run不起來了。拋出以下異常。

    嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 
    'dataSource' defined in class path resource [applicationContext-resources.xml]: Circular placeholder reference 'jdbc.driverClassName' in property definitions
        at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:
    268)
        at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:
    75)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:
    554)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:
    528)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:
    363)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:
    255)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:
    199)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:
    45)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:
    3843)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:
    4342)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
    1045)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:
    719)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
    1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:
    443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:
    516)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:
    710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:
    578)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
    39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
    25)
        at java.lang.reflect.Method.invoke(Method.java:
    597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:
    288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:
    413)

    這個問題在之前bsdts里也遇到過,主要是因為在appfuse生成的項目里配置文件jdbc.properties里都使用了占位符 placeholder,如果項目需要正常在Eclipse的Tomcat里Run里來,這個文件的占位符應該正確的給Replace掉。出現上面的異常 主要就是占位符沒有被正確的Replace掉。好了,既然原因找到了,我們下面來看下如何解決。
    在Bsdts里面遇到這個問題的時候,我們經常是重新在Console下面運行mvn package 或者mvn install后,再重新Deploy就可以了。但是實踐證明在mgsclp里面是行不通的。這是為什么呢?
    經過查看mgsclp里的Target里的jdbc.properties文件,發現其已經給正確Replace掉了。只是沒有正確地給Eclipse Deploy到tomcat里。
    根據上面,我初步確定是Eclipse配置的問題。
    我們現在知道的情況有哪些呢?
    一是maven是會把placeholder自動replace的.這個我們可以通過查看Target/classes目錄下面的jdbc.properties文件可以看到,經過maven處理后的placeholder是給正確replace了.
    2.在Eclipse里面部署過后的jdbc.properties文件的plackholder沒有被replace掉.

    Solution:
    我們的jdbc.properties文件就是位于src/main/resources目錄下面的.我們可以看到Excluded里面已經有很多 properties給Excluced了.這是i18n的文件,同樣也是需要maven進行編碼處理的,而jdbc.properties文件是要進行 replace plackholder處理.本質上是一樣的.這里把文件加進去后,eclipse也不會進行處理的.所以,我們需要把jdbc.properties文 件同樣加入excluded里面.我們不需要Eclipse對這些文件進行處理.maven處理就行了.這樣子,Eclipse 就不會把maven處理的結果用原來的版本覆蓋了.

    好,現在說回到部署問題.我們的War工程在maven里,只要把target/classes里的東西與src/webapp里面的東西放到 Tomcat就行了.這次相關的配置文件有org.eclipse.wst.common.component. Eclipse是如何知道哪些內容需要部置到Tomcat就是在這個文件里面定義的.關鍵的節點就是<wb-resource>.由前面所說 我們需要的內容只有兩個target/classes,src/webapp.所以實際上我們只要把這兩個目錄上面的東西放到正確的部署位置就行了.其它 內容都是多余的.于是我只保留下面兩個內容
    <wb-resource deploy-path="/" source-path="src/main/webapp"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="target/classes"/>
    這里的部署,只是把這里指定的目錄Copy過去而已不做任務處理,(從我目前觀察的情況是這樣子的).
    我們之前為什么不會呢,就是因為有很多個這樣的節點.有些節點會引用沒有處理過的文件.Eclipse再一次把沒有處理過的文件蓋掉處理過的文件,就出現的我們剛開始的時候的問題了.

    好了,今天就到這里。

    posted on 2008-09-11 23:06 Tauruser 閱讀(3065) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产99久久久国产精免费| 另类专区另类专区亚洲| 国产好大好硬好爽免费不卡| 亚洲综合精品网站| 中文字幕视频在线免费观看| 亚洲日韩乱码中文无码蜜桃臀网站| 国产高潮久久免费观看| 亚洲精品成人片在线观看精品字幕 | 国产成人A在线观看视频免费 | 亚洲短视频男人的影院| 99爱在线精品视频免费观看9| 亚洲a在线视频视频| 青青草无码免费一二三区| 亚洲成a人片在线观| 拨牐拨牐x8免费| 在线视频亚洲一区| 亚洲一级特黄大片无码毛片| 免费无码一区二区三区蜜桃| 久久亚洲AV成人无码| 国产h视频在线观看免费| 亚洲国产成人久久综合| 爱情岛论坛网亚洲品质自拍| 无码少妇精品一区二区免费动态| 亚洲国产综合人成综合网站00| 在线jyzzjyzz免费视频| 中国一级特黄高清免费的大片中国一级黄色片 | 高清免费久久午夜精品| 亚洲国产精品无码久久一区二区 | 国产真实伦在线视频免费观看| 一级毛片a免费播放王色电影| 亚洲国产AV无码专区亚洲AV| 男女超爽刺激视频免费播放| 亚洲日韩在线中文字幕综合| 亚洲精品无码专区久久久| 免费可以在线看A∨网站| 日韩在线一区二区三区免费视频| 老司机亚洲精品影院| 国产成人高清精品免费软件| 9420免费高清在线视频| 精品久久亚洲一级α| 亚洲视频免费在线看|