當(dāng)柳上原的風(fēng)吹向天際的時(shí)候...

          真正的快樂來(lái)源于創(chuàng)造

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          將程序從一個(gè)容器換到另一個(gè)容器,總會(huì)有各種意料之外的困難需要解決,近日本人需要將一個(gè)Web工程從Tomcat環(huán)境轉(zhuǎn)移到WebSphere環(huán)境,經(jīng)歷了一番周折,特地將此經(jīng)過(guò)記錄下來(lái),也許它能對(duì)將要進(jìn)行如此經(jīng)歷的人其一點(diǎn)幫助作用,另外在此也向網(wǎng)絡(luò)同仁和工作中的同事表示感謝。

          原環(huán)境:
          程序:SSH
          容器:Tomcat6.0
          數(shù)據(jù)庫(kù):MySql5

          新環(huán)境:
          程序:SSH
          容器:WebSphere6.1
          數(shù)據(jù)庫(kù):Oracle10g

          移植過(guò)程中的第一個(gè)困難,是WebSphere不認(rèn)識(shí)Web.xml中的Struts taglib.原文字(適用于Tomcat)如下:
          <!-- Struts的TLDS -->
              
          <taglib>
                  
          <taglib-uri>/WEB-INF/tld/app.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/tld/app.tld</taglib-location>
              
          </taglib>

              
          <!-- Struts Tag Library Descriptors -->
              
          <taglib>
                  
          <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
              
          </taglib>

              
          <taglib>
                  
          <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
              
          </taglib>

              
          <taglib>
                  
          <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
              
          </taglib>

          這個(gè)問(wèn)題因?yàn)橹坝兴鶞?zhǔn)備,在網(wǎng)絡(luò)上找到了答案,將上述文字包在<jsp-config>節(jié)點(diǎn)中即可,修改后(對(duì)Tomcat和WebSphere均適用)的文字如下:
          <!-- Struts的TLDS -->
              
          <jsp-config>
                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/app.tld</taglib-uri>
                      
          <taglib-location>/WEB-INF/tld/app.tld</taglib-location>
                  
          </taglib>

                  
          <!-- Struts Tag Library Descriptors -->
                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
                      
          <taglib-location>
                          /WEB-INF/tld/struts-bean.tld
                      
          </taglib-location>
                  
          </taglib>

                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
                      
          <taglib-location>
                          /WEB-INF/tld/struts-html.tld
                      
          </taglib-location>
                  
          </taglib>

                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
                      
          <taglib-location>
                          /WEB-INF/tld/struts-logic.tld
                      
          </taglib-location>
                  
          </taglib>
              
          </jsp-config>

          如此處理后,首頁(yè)顯示出來(lái)了,隨即翻頁(yè)遇到了問(wèn)題,在IE中是翻頁(yè)出現(xiàn)404錯(cuò)誤,在FF中好一點(diǎn),它告訴我WebSphere無(wú)法解析struts配置文件struts-config.xml。
          起初我以為是中文問(wèn)題,刪除struts-config.xml中所有中文注釋問(wèn)題依舊,接下來(lái)在網(wǎng)絡(luò)中尋找,還真有和我遇到一樣問(wèn)題的難友,但沒人提出解決方案,正在撓頭之際,我們的PM忽然說(shuō)是否JDK不一致,檢查一下,本機(jī)用的是1.6,而WebSphere自帶1.5的,將本機(jī)也調(diào)成1.5后,問(wèn)題解決! 真是只有咒語(yǔ)能解開咒語(yǔ)。

          再下來(lái),在表單提交時(shí)遇到了亂碼問(wèn)題,這是因?yàn)橹奥犘啪W(wǎng)絡(luò)意見,將Web.xml中的filter都去掉了,結(jié)果自然亂碼。此時(shí)感覺網(wǎng)絡(luò)傳聞未必可信,于是將filter又重新加上,亂碼沒有了。看來(lái)不經(jīng)親自嘗試而盲從網(wǎng)絡(luò)傳聞是要吃虧的。

          再下來(lái),程序要訪問(wèn)數(shù)據(jù)庫(kù)了,于是在WebSphere6.1中設(shè)置了數(shù)據(jù)源,再在Spring配置文件中進(jìn)行了設(shè)置,如下:
          <bean id="dataSource"
                  class
          ="org.springframework.jndi.JndiObjectFactoryBean">
                  
          <property name="jndiName"
                      value
          ="java:comp/env/jdbc/*******DS">
                  
          </property>
          </bean> 


          這樣寫在Tomcat中好用,在WebSphere不好用,正在撓頭之際,PM告我別的項(xiàng)目有同樣的寫法,于是一看,java:comp/env/這部分是不需要的,直接把數(shù)據(jù)源JNDI名寫在Value中就可以了。
          <bean id="dataSource"
                  class
          ="org.springframework.jndi.JndiObjectFactoryBean">
                  
          <property name="jndiName"
                      value
          ="jdbc/*******DS">
                  
          </property>
          </bean> 

          其它數(shù)據(jù)庫(kù)移植的問(wèn)題就交給了Hibernate。至此問(wèn)題全部解決。

          事后來(lái)看,WebSphere6.1對(duì)中文,SSH的支持還是很好的,只是有些特定的地方和傳統(tǒng)的Tomcat中的項(xiàng)目不太一樣,注意一下就好了,未必有想象中的困難。遇到困難時(shí),向有同樣經(jīng)歷的人請(qǐng)教比自己在網(wǎng)絡(luò)上搜尋要快很多。
          posted on 2011-03-16 22:43 何楊 閱讀(421) 評(píng)論(2)  編輯  收藏

          Feedback

          # re: 只有咒語(yǔ)能解開咒語(yǔ)--談一次Web工程的移植 2011-03-31 16:52 鮑國(guó)鈺
          Tomcat6向Weblogic10.3移植,
          SQLServer2005向Oracle10g數(shù)據(jù)庫(kù)轉(zhuǎn)換折磨了我一個(gè)多月。最終還是自己寫
          了個(gè)輪子。二進(jìn)制數(shù)據(jù)比較麻煩。  回復(fù)  更多評(píng)論
            

          # re: 只有咒語(yǔ)能解開咒語(yǔ)--談一次Web工程的移植 2011-04-05 21:53 何楊的股票博客
          @鮑國(guó)鈺

          有時(shí)候捷徑反而是最遠(yuǎn)的,看似笨辦法卻是最好的。  回復(fù)  更多評(píng)論
            


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 牙克石市| 赫章县| 自贡市| 岢岚县| 甘肃省| 宿松县| 德令哈市| 桑植县| 永寿县| 岢岚县| 小金县| 黄大仙区| 通河县| 靖安县| 巫溪县| 儋州市| 重庆市| 定兴县| 湘西| 中西区| 轮台县| 黔西县| 博兴县| 临江市| 台北县| 巴东县| 通州市| 静宁县| 聂拉木县| 南澳县| 疏附县| 沭阳县| 云安县| 台安县| 广元市| 万山特区| 康平县| 灯塔市| 浦城县| 竹山县| 阳新县|