2007年6月13日

          在進行項目開發時,遇到一些ORACLE的問題,現在提供一些解決方法,希望能給大家一點幫助
          1.問題描述: 當對某個表的數據進行插入或更新等DML命令操作時,數據庫出現如下異常信息:
            ORA-12096: error in materialized view log on "DB_XTWH"."T_XT_DBUSERPOOLBPOL"
            ORA-00942: table or view does not exist
              解決方法:出現這個問題的原因是物化視圖日志出了問題,只要刪除該物化視圖日志就解決問題,刪除命令為:
            drop materialized view log on 用戶名.表名;
            drop materialized view log on DB_XTWH.T_XT_DBUSERPOOLBPOL;
          2.問題描述:當通過DBLINK操作其中的一張表時,總是提示ORA-02085:database link SKSKJ connects to SKSKJ.US.ORACLE.COM錯誤信息,而名為SKSKJ的DBLINK配置是正確的。
              解決方法:把數據庫的參數global_names設置為FALSE就解決問題了。
          posted @ 2007-10-14 15:38 湯湯 閱讀(360) | 評論 (0)編輯 收藏
           
          [1]好好規劃自己的路,不要跟著感覺走!根據個人的理想決策安排,絕大部分人并不指望成為什么院士或教授,而是希望活得滋潤一些,爽一些。那么,就需要慎重安排自己的軌跡。從哪個行業入手,逐漸對該行業深入了解,不要頻繁跳槽,特別是不要為了一點工資而轉移陣地,從長遠看,這點錢根本不算什么,當你對一個行業有那么幾年的體會,以后錢根本不是問題。頻繁地動蕩不是上策,最后你對哪個行業都沒有摸透,永遠是新手!   
          [2]可以做技術,切不可沉湎于技術。千萬不可一門心思鉆研技術!給自己很大壓力,如果你的心思全部放在這上面,那么注定你將成為孔乙己一類的人物!適可而止為之,因為技術只不過是你今后前途的支柱之一,而且還不是最大的支柱,除非你只愿意到老還是個工程師!   
          [3]不要去做技術高手,只去做綜合素質高手!在企業里混,我們時常瞧不起某人,說他“什么都不懂,憑啥拿那么多錢,憑啥升官!”這是普遍的典型的工程師的迂腐之言。人家能上去必然有他的本事,而且是你沒有的本事。你想想,老板搞經營那么多年,難道見識不如你這個新兵?人家或許善于管理,善于領會老板意圖,善于部門協調等等。因此務必培養自己多方面的能力,包括管理,親和力,察言觀色能力,攻關能力等,要成為綜合素質的高手,則前途無量,否則只能躲在角落看示波器!技術以外的技能才是更重要的本事!!從古到今,美國日本,一律如此!   
          [4]多交社會三教九流的朋友!不要只和工程師交往,認為有共同語言,其實更重要的是和其他類人物交往,如果你希望有朝一日當老板或高層管理,那么你整日面對的就是這些人。了解他們的經歷,思維習慣,愛好,學習他們處理問題的模式,了解社會各個角落的現象和問題,這是以后發展的巨大的本錢,沒有這些以后就會笨手笨腳,跌跌撞撞,遇到重重困難,交不少學費,成功的概率大大降低!
          [5]知識涉獵不一定專,但一定要廣!多看看其他方面的書,金融,財會,進出口,稅務,法律等等,為以后做一些積累,以后的用處會更大!會少交許多學費!!   
          [6]抓住時機向技術管理或市場銷售方面的轉變!要想有前途就不能一直搞開發,適當時候要轉變為管理或銷售,前途會更大,以前搞技術也沒有白搞,以后還用得著。搞管理可以培養自己的領導能力,搞銷售可以培養自己的市場概念和思維,同時為自己以后發展積累龐大的人脈!應該說這才是前途的真正支柱!!!   
          [7]逐漸克服自己的心里弱點和性格缺陷!多疑,敏感,天真(貶義,并不可愛),猶豫不決,膽怯,多慮,臉皮太薄,心不夠黑,教條式思維。。。這些工程師普遍存在的性格弱點必須改變!很難嗎?只在床上想一想當然不可能,去幫朋友守一個月地攤,包準有效果,去實踐,而不要只想!不克服這些缺點,一切不可能,甚至連項目經理都當不好--盡管你可能技術不錯!   
          [8]工作的同時要為以后做準備!建立自己的工作環境!及早為自己配置一個工作環境,裝備電腦,示波器(可以買個二手的),仿真器,編程器等,業余可以接點活,一方面接觸市場,培養市場感覺,同時也積累資金,更重要的是準備自己的產品,咱搞技術的沒有錢,只有技術,技術的代表不是學歷和證書,而是產品,拿出象樣的產品,就可技術轉讓或與人合作搞企業!先把東西準備好,等待機會,否則,有了機會也抓不住!   
          [9]要學會善于推銷自己!不僅要能干,還要能說,能寫,善于利用一切機會推銷自己,樹立自己的品牌形象,很必要!要創造條件讓別人了解自己,不然老板怎么知道你能干?外面的投資人怎么相信你?提早把自己推銷出去,機會自然會來找你!搞個個人主頁是個好注意!!特別是培養自己在行業的名氣,有了名氣,高薪機會自不在話下,更重要的是有合作的機會...   
          [10]該出手時便出手!永遠不可能有100%把握!!!條件差不多就要大膽去干,去闖出自己的事業,不要猶豫,不要彷徨,干了不一定成功,但至少為下一次沖擊積累了經驗,不干永遠沒出息,而且要干成必然要經歷失敗。不經歷風雨,怎么見彩虹,沒有人能隨隨便便成功!
          posted @ 2007-08-10 22:26 湯湯 閱讀(269) | 評論 (0)編輯 收藏
           

          現有項目組用SUN JDK1.5中自帶的示例:jnlp-servlet作為WEBSTART版本管理的SERVLET。它可以很好的實現JNLP相關資源(JAR,圖片等)的基于版本的管理和增量更新。并有幾個類似 $ $codebase, $ $name的可替換關鍵字。(原來寫了一個簡單的servlet,可以實現軟編碼,但沒法提供靈活的版本控制)

          但現有項目的需求更高一些,即,JNLP中需要傳更多的參數,比如,服務端IP,端口,上下文,用戶登錄的SESSIONID等,由于jnlp-servlet有源代碼,我們很快修改了JnlpFileHandler和specializeJnlpTemplate方法,并加入了這幾個自定義關鍵字( $ $host, $ $port, $ $newcontext, $ $sessionid)。JNLP如下所示:

          <?xml version="1.0" encoding="utf-8"?>

          <jnlp spec="1.0 " codebase=" $ $codebase" href=” $ $name”>

          <information>

          <title>My System</title>

          <vendor>CFR</vendor>

          <icon href="indexbannerleft.jpg" kind="splash" />

          <homepage href="index.html"/>

          <description>My System</description>

          <description kind="short">CFR Inc..</description>

          </information>

          <security><all-permissions/></security>

          <resources>

          <j2se version="1.4" initial-heap-size="32m"/>

          <jar href="myapp.jar" version="1.1"/>

          <nativelib href="swt-lib.jar" version="1.1"/>

          </resources>

          <resources os="Windows"><jar href="swt.jar" version="1.1"/></resources>

          <resources os="Windows"><jar href="jface.jar" version="1.0"/></resources>

          <resources os="Windows"><jar href="osgi.jar" version="1.0"/></resources>

          <resources os="Windows"><jar href="runtime.jar" version="1.0"/></resources>

          <application-desc main-class="com.cfr.app.main">

          <argument> $ $session</argument>

          <argument> $ $host</argument>

          <argument> $ $port</argument>

          <argument> $ $newcontext</argument>

          <argument>0</argument>

          <argument>aa</argument>

          </application-desc>

          </jnlp>

          其中,SESSIONID是用其內部的request得到。

          一切好象即簡單和明了,工作正常,但很快就發現了嚴重的問題。

          首先說說該應用的使用模式如下:

          1、 用戶從網頁登錄系統,然后在里面點擊:http://host:port/myapp/swt/index.jnlp鏈接。

          2、 啟動應用(因為應用是跟當前登錄SESSION直接相關的)

          按照設計本意,此時,用戶的應用應通過JNLP中的參數得到了該用戶登錄后的SESSIONID才對,但事實并非如此。這種情況只出現在WEBSTART第一次下載的時候,以后當用戶重新打開瀏覽器登錄后(此時當然是一個新的SESSION),在頁面中啟動WEBSTART后,發現,該SESSIONID還是以前的,并沒有想象中的將新SESSIONID傳了進來。

          后來還是看看JnlpFileHandler中的源代碼,發現主要在getJnlpFile(客戶端是JRE1.5以下時調用)和getJnlpFileEx(客戶端是JDK1.5以上時用)進行了相關實現。原來,它每生成一個JNLP,就將其緩存在HASHMAP中,下一次請求,如果請求的URL相關并且文件的timestamp(就是Web服務器中的jnlp文件的修改時間,可想而知,除了升級,這個文件一般不會變)一樣,就從緩存中取,這樣一來,我們也可以推測,按照上面的設計,如果有一個用戶下載了應用,其它用戶從其它機器下載到的JNLP還是第一個用戶的JNLP,這是一個更加嚴重的問題。

          由于URL是一樣的,現在考慮更改時間戳,即在getJnlpFile中顯式的將timesstamp改為當前的時間:

          long lastModified = new java.util.Date().getTime();

          這樣,任何一次請求都不會從緩存中獲得,而是重新生成一個,好象這能很好的解決這個問題了吧?

          但事實遠沒有想象的那么簡單。這跟WEBSTART與服務端的交互過程有關系。

          WEBSTART要通過多次從服務端交互才會真正下載JNLP文件,這主要是驗證一些時間等相關的屬性(具體我沒有看代碼)。大至是三次才會真正的把JNLP下載下來(其實服務端會生成三次,真正下載的是第三個),由于我們的SESSIONID是從SERVLET內部的REQUEST中直接得到,這樣一來,實際上只有第一個請求的SESSIONID是正確的(因為它是直接從瀏覽器中進入的),其它兩個都是WEBSTART用URLConnection建立的連接,SESSIONID都是新生成的,而下載的恰恰又是第三個,這樣一來,又黃了!!!

          接下來的想法是自己設法傳SESSIONID,而不是從當前REQUEST中取。所以,就剛才啟動WEBSTART的鏈接改為如下形式:

          <a href="/myapp/swt/index.jnlp?sessionid=<%=request.getSession().getId()%>">啟動客戶端程序</a>

          這樣,生成的URL會是:

          http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78

          按照前面的JNLP文件,下載下來的JNLP第一行是:

          <jnlp spec="1.0 " codebase="http://127.0.0.1:8899/myapp/swt/" href=” http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78”>

          既然有了SESSIONID(這意味著每個請求的URL都不會一樣!),我們就用不著將時間戳改為當前時間了,還按原來的做就行了。

          到此為止,好像問題解決的很徹底哦!但不要高興的太早!!!!!

          我們同樣做實驗:

          1、 將WEBSTART應用清空

          2、 登錄系統,下載安裝應用并運行,一切OK!

          3、 退出該系統

          4、 打開新的瀏覽器并登錄

          5、 點相應的鏈接啟動WEBSTART應用

          6、 怪了:SESSIONID怎么還是前面的一個呢?

           查看jnlp-servlet日志,剛才說了,要經過多次握手才會實際的下載JNLP,從流程中發現,客戶端發的請求,第一個是對的即是http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78

           SESSION是最新的,但第二個請求,SESSION怎么就是以前的呢?

          原來,WEBSTART在經過第一次握手之后,發現本地有該應用,就用該應用JNLP中的href字段發送下面的請求,導致了剛才的問題。

          后面的解決辦法說起來就沒什么了,直接去掉href字段就行了,如下片段:

          <?xml version="1.0" encoding="utf-8"?>

          <jnlp spec="1.0 " codebase=" $ $codebase">

          這樣,每次都用新的URL去請求了!!

          說來說去,只是過程,其它代碼中改得并不多,主要是增加了SESSION參數。

          在以后動態更改應用的MAIN類時,思路也差不多。

          其它人需地做的改動:

          更改JNLP,去掉href項

          換成新的jnlp_servlet

          清除當前已安裝的應用。

          將鏈接改為有SESSIONID為參數的鏈接。

          轉載:文章來自于http://java.linuxjiaocheng.com/applet-api/sdk-tutorial/xml-jsp-programming2601.html
          posted @ 2007-06-13 19:05 湯湯 閱讀(771) | 評論 (0)編輯 收藏
           
          主站蜘蛛池模板: 湖口县| 泰安市| 石柱| 利辛县| 和政县| 赤水市| 钟祥市| 台安县| 龙川县| 衡东县| 南平市| 天等县| 龙州县| 西华县| 长垣县| 福贡县| 虞城县| 遂川县| 调兵山市| 西乡县| 松潘县| 宜城市| 高阳县| 喜德县| 本溪市| 巫山县| 肥东县| 买车| 资中县| 寿阳县| 洞口县| 手游| 瑞安市| 民丰县| 监利县| 合山市| 华宁县| 瑞丽市| 科技| 浑源县| 通辽市|