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

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

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

    隨筆 - 81  文章 - 1033  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    在浮躁的年代里,我們進(jìn)取心太切,患得患失;虛榮心太強(qiáng),戰(zhàn)戰(zhàn)兢兢。一心爭(zhēng)強(qiáng)好勝,惟恐榜上無(wú)名。
    I think I can fly , and flying like a bird !
    程序員一名,已售出,缺貨中!

    我的郵件聯(lián)系方式

    用且僅用于MSN

    博客點(diǎn)擊率
    free web counter
    free web counter

    常用鏈接

    留言簿(36)

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 186923
    • 排名 - 309

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    ???????因?yàn)橄塍w驗(yàn)一把Spring2.0基于aop名稱空間的AOP和Hibernate3.2比EJB3.0的JPA還要細(xì)致強(qiáng)大的annotation等等新特征,特地跑到SpringSide(一個(gè)基于Spring核心的強(qiáng)大而優(yōu)雅的企業(yè)快速開發(fā)框架)去下載了完整的開發(fā)包。記得要先照它介紹的方式運(yùn)行起來(lái),只要雙擊個(gè).bat文件程序,數(shù)據(jù)庫(kù)(HSQLDB),服務(wù)器(Tomcat5.5)就全部署好了,范例就已經(jīng)跑起來(lái)了,非常吸引人。但是我一般用的是Resin3? ,所以我打算停了Tomcat跑起我的Resin,這時(shí)候一向聽話的Resin居然開始撒嬌了。

    ??????配好路徑啟動(dòng)Resin,調(diào)試信息如下:
    ?1Resin-3.0.19?(built?Mon,?15?May?2006?04:50:47?PDT)
    ?2Copyright(c)?1998-2006?Caucho?Technology.??All?rights?reserved.
    ?3
    ?4??Using?Resin(R)?Open?Source?under?the?GNU?Public?License?(GPL).
    ?5
    ?6??See?http://www.caucho.com?for?information?on?Resin?Professional,
    ?7??including?caching,?clustering,?JNI?acceleration,?and?OpenSSL?integration.
    ?8
    ?9Starting?Resin?on?Wed,?24?Jan?2007?21:25:59?+0800?(CST)
    10
    11[21:26:02.375]?Server[]?starting
    12[21:26:02.375]?
    13[21:26:02.375]?Windows?XP?5.1?x86
    14[21:26:02.375]?Java?1.5.0_10-b03,?32,?mixed?mode,?GBK,?zh,?Sun?Microsystems?Inc.
    15[21:26:02.375]?resin.home?=?D:\resin-3.0.19
    16[21:26:02.375]?server.root?=?null
    17[21:26:02.375]?
    18[21:26:02.484]?http?listening?to?*:8080
    19[21:26:02.546]?hmux?listening?to?localhost:6802
    20[21:26:02.765]?Host[]?starting
    21[21:26:03.890]?com.caucho.config.LineConfigException:?WEB-INF/web.xml:4:?bad?character?fffd
    22[21:26:04.781]?WebApp[http://localhost:8080/resin-doc]?starting
    23[21:26:04.953]?Resin?started?in?3000ms


    ??????注意紅色的信息,讀取web.xml異常了,我四級(jí)都沒過(guò)的英語(yǔ)也看出來(lái)了是字符錯(cuò)誤,相信大家也看出來(lái)了吧。憑著經(jīng)驗(yàn)判定是文件編碼的問題,用eclipse打開web.xml果然中文部分有亂碼。一向都覺得Resin在編碼的處理上,特別是中文編碼上比Tomcat5要好很多。今天怎么會(huì)出現(xiàn)這種奇怪的問題,帶著疑問繼續(xù)往下看吧。我當(dāng)時(shí)想還是先跑起來(lái)再說(shuō),老老實(shí)實(shí)的把編碼都轉(zhuǎn)一下吧。

    ??????告訴大家一個(gè)轉(zhuǎn)文件編碼最簡(jiǎn)單的辦法,就是把文件用windows自帶的記事本程序打開,選擇菜單“文件”-“另存為”,然后在另存為的界面把文件類型選擇為“所有文件”,編碼選擇為“UTF-8”,選擇目標(biāo)文件覆蓋保存。

    ??????轉(zhuǎn)了編碼后發(fā)現(xiàn)注釋中有兩個(gè)顯示不了的字符,反正是注釋索性就刪掉了。修改后再次啟動(dòng)Resin,果然正常了。但是又出現(xiàn)了更郁悶的問題。部分調(diào)試信息如下:

    ?12007-01-24?22:44:02,125?ERROR?[org.springframework.web.context.ContextLoader]?-?<Context?initialization?failed>
    ?2org.springframework.beans.factory.BeanDefinitionStoreException:?Unexpected?exception?parsing?XML?document?from?file?[D:\projects\SSHelloWorld\webapp\WEB-INF\classes\spring\applicationContext.xml];?nested?exception?is?java.lang.IllegalArgumentException:?Bean?name?must?not?be?empty
    ?3Caused?by:?
    ?4java.lang.IllegalArgumentException:?Bean?name?must?not?be?empty
    ?5????at?org.springframework.util.Assert.hasText(Assert.java:161)
    ?6????at?org.springframework.beans.factory.config.RuntimeBeanReference.<init>(RuntimeBeanReference.java:58)
    ?7????at?org.springframework.beans.factory.config.RuntimeBeanReference.<init>(RuntimeBeanReference.java:46)
    ?8????at?org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser.parseInternal(AnnotationDrivenBeanDefinitionParser.java:76)
    ?9????at?org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:56)
    10????at?org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:78)
    11????at?org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1147)
    12????at?org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1137)
    13????at?org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:145)
    14????at?org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:89)
    15????at?org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:499)
    16????at?org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:407)
    17????at?org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:357)
    18????at?org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    19????at?org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126)
    20????at?org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
    21????at?org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:123)
    22????at?org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:91)
    23????at?org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:94)
    24????at?org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:294)
    25????at?org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
    26????at?org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
    27????at?org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
    28????at?org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    29????at?com.caucho.server.webapp.Application.start(Application.java:1597)
    30????at?com.caucho.server.deploy.DeployController.startImpl(DeployController.java:621)
    31????at?com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72)
    32????at?com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:509)
    33????at?com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:158)
    34????at?com.caucho.server.webapp.ApplicationContainer.start(ApplicationContainer.java:652)
    35????at?com.caucho.server.host.Host.start(Host.java:385)
    36????at?com.caucho.server.deploy.DeployController.startImpl(DeployController.java:621)
    37????at?com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72)
    38????at?com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:509)
    39????at?com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:158)
    40????at?com.caucho.server.host.HostContainer.start(HostContainer.java:501)
    41????at?com.caucho.server.resin.ServletServer.start(ServletServer.java:977)
    42????at?com.caucho.server.deploy.DeployController.startImpl(DeployController.java:621)
    43????at?com.caucho.server.deploy.AbstractDeployControllerStrategy.start(AbstractDeployControllerStrategy.java:56)
    44????at?com.caucho.server.deploy.DeployController.start(DeployController.java:517)
    45????at?com.caucho.server.resin.ResinServer.start(ResinServer.java:485)
    46????at?com.caucho.server.resin.Resin.init(Resin.java)
    47????at?com.caucho.server.resin.Resin.main(Resin.java:624)


    ??????一看錯(cuò)誤是Bean name must not be empty,bean的名字不能為空?為什么啊,沒聽說(shuō)過(guò)啊,不管是Spring的官方文檔,范例還是看的書上教授的都沒有聽說(shuō)這么一回事情啊。沒天理啊,運(yùn)行個(gè)HelloWorld也這么費(fèi)力。。。馬上抱起錯(cuò)誤就去找Google,居然搜不到。。。(正因?yàn)镚OOGLE搜索不到相關(guān)的解決,所以我特地寫了這篇文章與大家分享)不會(huì)吧,難道大家都沒碰到過(guò),我的人品問題?Google也沒辦法找到的問題,我只好翻找Spring的源代碼。查看org.springframework.util.Assert.hasText類,原來(lái)拋出java.lang.IllegalArgumentException異常不是按字面意思理解的bean名字不能為空,先汗自己!不過(guò)在這個(gè)類里面也沒找到具體的原因。難道還要繼續(xù)往前翻找源代碼?雖然看大師們的作品是種享受,但是注定我運(yùn)行HelloWorld就搞成這樣?并且查源代碼也不是一時(shí)能找的出問題的。

    ??????停止服務(wù),啟動(dòng)服務(wù),停止服務(wù),啟動(dòng)服務(wù)。。。反復(fù)的反復(fù),問題依然。換回Tomcat去,一切正常。。。徹底崩潰,難道resin上跑不起Spring?Spring容器可是JAVA原生的動(dòng)態(tài)代理方式實(shí)現(xiàn),完全應(yīng)該具備JAVA的“一次編寫到處運(yùn)行”。我看到的文檔和書籍也無(wú)一不盛贊它的Web服務(wù)器,應(yīng)用服務(wù)器無(wú)關(guān)。我想一定是哪里配置有問題,我又把每個(gè)xml配置文件都翻了個(gè)遍,依然找不出問題。

    ??????我突然想起曾經(jīng)看過(guò)的一篇關(guān)于JAVA XML的文章,好像JAVA默認(rèn)的XML解析用的是Crimson,不如另一個(gè)XML解析實(shí)現(xiàn)Xerces ,莫非是Resin用的解析不行?抱著死馬當(dāng)活馬醫(yī)的態(tài)度配上了xerces。

    ??????配置xerces方法如下:
    ??????1.在VM級(jí)
    ??????首先在CLASSPATH下放置xerces相關(guān)的包,然后在JRE\lib\目錄下建一個(gè)jaxp.properties的文件,用來(lái)聲名替換解析器,jaxp.properties內(nèi)容如下:
    ?

    1javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl?
    2javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl


    注意:必須建立此文件顯示聲明,如果只是引入了xerces的相關(guān)包,由于JDK的Class Loader的優(yōu)先級(jí)關(guān)系,還是會(huì)很頑固的使用Crimson。

    ??????2.在web服務(wù)器級(jí)(Resin3.0.19為例)
    ??????把xerces相關(guān)包放入容器的CLASSPATH中(Resin主目錄下的lib目錄),然后在配置文件resin.conf(Resin主目錄下的conf目錄中resin.conf文件)中的server節(jié)點(diǎn)中加入如下XML代碼:

    1<system-property?javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
    2?<system-property?javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>



    ???????聲明調(diào)用xerces實(shí)現(xiàn)XML解析。

    ???????JAVA XML相關(guān)內(nèi)容推薦參閱:
    ???http://www-900.ibm.com/developerWorks/cn/xml/x-injava/index.shtml

    ?? http://www-900.ibm.com/developerWorks/cn/xml/x-injava2/index.shtml

    ?? http://www-900.ibm.com/developerWorks/cn/xml/x-databdopt/part2/index.shtml

    ?? http://www-900.ibm.com/developerWorks/cn/xml/x-databdopt/part1/index.shtml


    ??????我在Resin中配置好xerces后,啟動(dòng)。WebApplicationContext初始化正常,Struts初始化正常,一切正常,終于看到了界面。

    ??????然后我又想剛才web.xml中的錯(cuò)誤會(huì)不會(huì)也是因?yàn)闆]有用xerces的原因,把原來(lái)沒修改的web.xml又拷了一個(gè)過(guò)來(lái),啟動(dòng)依然報(bào)同樣的錯(cuò),仔細(xì)再看文件里面確實(shí)在最開始的注釋中有兩個(gè)錯(cuò)誤的字符,不知道SpringSide的大俠們是故意的還是不小心弄錯(cuò)了。。。刪除錯(cuò)誤字符啟動(dòng),成功!

    ??????總結(jié)如下:
    ??????1.?web.xml中是以為確實(shí)存在錯(cuò)誤的字符導(dǎo)致web容器無(wú)法初始化,修改文件后就正常了。
    ??????2.?Resin讀取Spring的配置文件必須顯示采用xerces,否則無(wú)法初始化Spring容器。建議配置服務(wù)器級(jí)的xerces。
    ??????3.?平時(shí)開發(fā)和學(xué)習(xí)過(guò)程中應(yīng)廣泛涉獵,拓寬知識(shí)面。碰到問題大膽假設(shè),聯(lián)想,細(xì)心調(diào)試。最后再糾根問底,徹查明白。
    ??????4.?遇到問題不輕易放棄,多思考,多總結(jié),多記錄。

    ?
    posted on 2007-01-25 00:29 cresposhi 閱讀(5549) 評(píng)論(10)  編輯  收藏

    FeedBack:
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-01-25 15:40 小車馬
    樓主思路很正確,軟件開發(fā)就是這樣子的。。

    潛力貼論壇:http://content.uu1001.com  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-01-25 21:22 施偉
    初學(xué)Spring,希望大家多給意見,多指導(dǎo)!在此謝過(guò)先!  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-01-26 12:48 eloo
    re一下,Resin用它自己的解析器解析,也不是Crimson.看resin doc的這一頁(yè):resin-doc/doc/jaxp.xtp  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-01-31 21:02 施偉
    @eloo
    多謝,受益匪淺  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-02-02 12:05 小祝
    支持支持  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-02-02 15:15 梅穎
    我總講不正經(jīng)的話,會(huì)不會(huì)影響真的想來(lái)討論技術(shù)的同志們進(jìn)來(lái)的心情啊。。。  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-02-02 20:38 施偉
    呵呵,我最喜歡在快樂中學(xué)習(xí)。
    你看有了你博里多么熱鬧啊 象過(guò)年一樣 開心 呵呵  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-02-02 22:13 梅穎
    天天過(guò)年就不好玩了灑

      回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-07-09 13:48 Nap
    萬(wàn)分感謝!
    很驚異地發(fā)現(xiàn),整個(gè)google只能搜到兩個(gè)resin fffd問題相關(guān)的條目,一個(gè)是本帖,還有一個(gè)在一個(gè)中文spring論壇上的求助,沒有解答。我也納悶為什么其他人沒有碰到類似的問題。而我是先后兩次碰到了這個(gè)問題。前一次是幾個(gè)月前,我使用tomcat避開了這個(gè)問題。這次徹底解決。謝謝!萬(wàn)分感謝!  回復(fù)  更多評(píng)論
      
    # re: 在Resin3下配置SpringSide的HelloWorld示例程序碰到的問題和解決方法 2007-12-23 09:00 sgwood
    呵呵,后面的那個(gè)問題在resin 3.1.2并沒有出現(xiàn),我找了找也沒發(fā)現(xiàn)有xerces這個(gè)包.但仍能運(yùn)行helloworld,當(dāng)然前提是web.xml的中文全刪.  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲爆乳少妇无码激情| 好大好硬好爽免费视频| 天天摸天天碰成人免费视频| 四虎永久在线精品免费观看地址| 久久精品国产亚洲AV麻豆王友容| 91亚洲精品麻豆| 国产一级片免费看| 亚洲第一成人影院| 亚洲精品国产精品国自产网站| 久久久久女教师免费一区| 欧洲美熟女乱又伦免费视频| 久久精品a亚洲国产v高清不卡| 香港一级毛片免费看| 亚洲精品动漫免费二区| 亚洲小视频在线观看| 91在线视频免费观看| 四虎免费久久影院| 久久精品国产精品亚洲精品| 综合一区自拍亚洲综合图区| 国产啪精品视频网免费| 亚洲综合欧美色五月俺也去| 在线jyzzjyzz免费视频| 久久亚洲中文无码咪咪爱| 亚洲?V乱码久久精品蜜桃| 国产97视频人人做人人爱免费| 老司机亚洲精品影视www| a级黄色毛片免费播放视频| 亚洲伊人久久大香线蕉苏妲己| 182tv免费观看在线视频| 亚洲国产AV一区二区三区四区| 免费h黄肉动漫在线观看| 成人自慰女黄网站免费大全| 亚洲精品福利网泷泽萝拉| 国产又黄又爽胸又大免费视频 | 97无码免费人妻超级碰碰碰碰 | 亚洲天堂一区在线| 暖暖在线日本免费中文| 日韩av无码免费播放| 亚洲入口无毒网址你懂的| 亚洲欧洲精品成人久久曰影片 | 免费99热在线观看|