在Weblogic+JBuilder7使用時的奇怪問題 (轉)

amyz發表於2007-11-13
在Weblogic+JBuilder7使用時的奇怪問題 (轉)[@more@]

  一週前,老師讓我們用去做專案,說句實話,我對Java真的是一知半解,絕對是個門外漢,無奈,老師的任務不能不完成,只好硬著頭皮去做。
  我們有一個專案叫“資料倉儲”,以前是師兄們做的,採用的是做,+JavaBean做開發。後來老師為了“提高專案的技術含量”,決定改做版本,我們這裡幾乎沒有人用J2EE做過專案,於是大家就開始到處找資料,,忙得不亦樂乎。
  最終,大家決定使用9i作,LOGIC7+JBuilder7作開發環境,原因很簡單Weblogic對J2EE支援的比較好,JBuilder開發環境還不錯,對機器要求不是太高(我們的機子比較差,P3-550+256M,剛好滿足最低要求:),本來以為很簡單的,很容易就會搞定,但是結果卻讓人大吃一驚。
  按照培訓資料上面說的,一步步裝好了Weblogic7,測試console,透過,然後再按照說明把JBuilder7也裝上,並按照順序配置好了,大致流程如下:
  Weblogic和JBuilder7整合後,經過配置,做出的Session Bean是好的,說明配置正確。
  然後測試實體Bean:
  1、設定的:
  在JBuilder7中,Tools--&gtEnterprise Setup...--&gtDatabase ,點選Add,選擇Oracle的位置D:OracleOra91jclibclasses12.zip,確定後,驅動在列表中出現,然後重新啟動JBuilder
  2、建立工程Demo,然後建立一個 Module 取名Hustli,然後匯入資料庫Schema資訊。
  3、輸入資料庫的連線資訊:我採用的是別人的機器上的oracle9,機器名是flyers,SID=daito,具體資訊如下:
  Driver: oracle..driver.OracleDriver
  URL:  jdbc:oracle:thin:@flyers:1521:daito 
  user=daito pass=daito
  JNDI NAME : Data
  4、成功後,建立CMP EJB,輸入EJB資訊,其中interface採用的是remote
  5、配置Weblogic中JDBC Pool和Data Source:
  JDBC Pool:
    Name: Pool
  URL:  jdbc:oracle:thin:@flyers:1521:daito
  Properties: user=daito
  Password: daito
  Initial Capacity: 5
  Maximum Capacity:10
  Test Table Name: hustli(我建的一個表)
  在Targets裡面加入myserver,其餘採用預設配置。
   
    Data Source:
  Name: DataSource
  JNDI Name:DataSource
  Pool Name:Pool
  在Targets裡面加入myserver,其餘採用預設配置
    然後重新啟動weblogic的設定頁面,成功
  6、對EJB打包,deploy成功。
  7、利用JBuilder7自動生成測試,改動main如下:
    public static void main(String[] args)
  {
  try
  {
  Client client = new Client();

  HustliRemoteHome home=client.getHome();
  HustliRemote r=home.findByPrimaryKey("jjli");
  System.out.println(r.getAge());
  }
  catch (RemoteException ex)
  {
  ex.printStackTrace();
  }
  catch(FinderException e)
  {
  e.printStackTrace();
  }
  }
  結果出現錯誤,在 ref = ctx.lookup("HustliRemote");(自動生成的)
    錯誤如下:
    javax.naming.NameNotFoundException: Unable to resolve 'HustliRemote' Resolved: '' Unresolved:'HustliRemote' ; remaining name 'HustliRemote'
  後來這個問題也在各位師兄的機器上出現,毫無例外。
  對於這個問題,大家討論了半天也沒有解決,於是各自分頭散去,大家靜下心來,把各種資訊自信的研究了,發現有一個共同點:在程式編譯的時候,有一個警告,大家開始沒有注意,後來就都注意到這個問題了,警告大致的意思是:臨時目錄有空格,可能導致致命的錯誤。
  但是我們發現的環境變數裡面的確有2各設定:TEMP和TMP,但是在變數裡面一個、系統變數裡面一個,按照我的觀點,編譯器應該先搜尋系統變數裡面的,系統變數裡面的值是C:WINNTTEMP,這應該沒有什麼問題,於是我們在C盤建了一個目錄,名字叫Temp,並且把使用者變數裡面的TEMP和TMP的值都設定為C:Temp,然後儲存,啟動JBuilder7,一切OK!
  這個問題,看來是不是很BT?我很奇怪為什麼JBur會先找使用者變數?
 
  如果上面的問題不叫問題,那是我們沒有注意警告,下面的問題就太讓人鬱悶了。
  Weblogic+JBuilder裝好了之後,執行了2天,然後為了,我又裝上了幾個防毒,開始全盤掃描,使用LoveGate居然殺到了幾個,然後把感染的檔案全部刪除,重新啟動機器,然後做了點別的事情,就把這件事情給忘掉了,等到明天啟動JBuilder,不幸的事情發生了,deploy的時候,發現報錯:無法連線t3:/localhost:7001。
  這豈不是怪事?我的伺服器明明開著的,一點異常的表現都沒有,然後我關掉JBuilder,用Weblogic控制檯開啟伺服器,執行良好,結果當在位址列裡輸入:時,居然找不到連線。
  開始我懷疑是weblogic出了問題,然後解除安裝了weblogic重新,問題依舊,最後把weblogic和JBuilder一起卸掉,重新裝,問題依然頑固的出現在我面前,究竟是怎麼了?難道是防毒的時候把重要的檔案刪除了?沒有辦法,只好重新格式化硬碟,重新裝了系統,首先把weblogic裝上,執行良好,裝上JBuilder,配置完畢,一切都沒有任何問題,然後把一系列的軟體裝上,自然也裝了防毒的KV3000,然後執行JBuilder,那個奇怪的問題又出現了!!!!
  為了解決問題,我決定把安裝的軟體一個個的解除安裝,最後發現,如果解除安裝了KV3000,JBuilder就沒有任何問題,否則,只要開啟實時監測,就無法執行JBuilder7。
  沒有辦法,只好把KV3000解除安裝。個人懷疑是不是KV3000對Java的執行進行監視,然後當作病毒殺掉,當然這只是猜測,如果有那位高手能夠指點一二,不勝感激。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982223/,如需轉載,請註明出處,否則將追究法律責任。

相關文章