ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          #

          Linux
          一旦內(nèi)核加載完成,內(nèi)核會啟動 init 進程,然后運行 rc6 腳本,之后運行所有屬于其運行級別的命令腳本。這
          些腳本都儲存在 /etc/rc.d/rcN.d 中(N代表運行級別),并且都建立著到 /etc/init.d 子目錄中命令腳本程序
          的符號鏈接。
          默認運行級別配置在 /etc/inittab 中。它通常為 3 或 5:

           # grep default: /etc/inittab
           id:3:initdefault:

          可以使用 init 來改變當前運行級別。舉個例子:

           # init 5                       # 進入運行級別 5

          運行級別列表如下:
          0 系統(tǒng)停止
          1 進入單用戶模式(也可以是 S)
          2 沒有 NFS 特性的多用戶模式
          3 完全多用戶模式(正常操作模式)
          4 未使用
          5 類似于級別3,但提供 XWindow 系統(tǒng)登錄環(huán)境
          6 重新啟動系統(tǒng)
          使用 chkconfig 工具控制程序在一個運行級別啟動和停止。

           # chkconfig --list             # 列出所有 init 腳本
           # chkconfig --list sshd        # 查看 sshd 在各個運行級別中的啟動配置
           # chkconfig sshd --level 35 on # 對 sshd 在級別 3 和 5 下創(chuàng)建啟動項
           # chkconfig sshd off           # 在所有的運行級別下禁用 sshd

          Debian 和基于Debian 發(fā)行版像 Ubuntu 或 Knoppix 使用命令 update-rc.d 來管理運行級別腳本。默認啟動為
          2,3,4 和 5,停止為 0,1 和 6。

           # update-rc.d  sshd defaults          # 設(shè)置 sshd 為默認啟動級別
           # update-rc.d  sshd start 20 2 3 4 5 . stop 20 0 1 6 . # 用顯示參數(shù)
           # update-rc.d  -f sshd remove         # 在所有的運行級別下禁用 sshd
           # shutdown -h  now (或者 # poweroff)    # 關(guān)閉停止系統(tǒng)

          FreeBSD
          BSD 啟動步驟不同于 SysV, 她沒有運行級別。她的啟動狀態(tài)(單用戶,有或沒有 XWindow)被配置在 /etc/
          ttys中。所有的系統(tǒng)腳本都位于 /etc/rc.d/中,第三方應(yīng)用程序位于 /usr/local/etc/rc.d/中。service 的啟
          動順序被配置在 /etc/rc.conf 和/etc/rc.conf.local中。默認行為可在 /etc/defaults/rc.conf 中進行配
          置。 這些腳本至少響應(yīng) start|stop|status.

           # /etc/rc.d/sshd status
           sshd is running as pid 552.
           # shutdown now                        # 進入單用戶模式
           # exit                                # 返回到多用戶模式
           # shutdown -p now                     # 關(guān)閉停止系統(tǒng)
           # shutdown -r now                     # 重新啟動系統(tǒng)

          同樣可以使用進程 init 進入下列狀態(tài)級別。舉個例子: # init 6 為重啟。
          0 停止系統(tǒng)并關(guān)閉電源 (信號 USR2)
          1 進入單用戶模式 (信號 TERM)
          6 重新啟動 (信號 INT)
          c 阻止進一步登錄 (信號 TSTP)
          q 重新檢查 ttys(5) 文件 (信號 HUP)

          在FreeBSD下,查看系統(tǒng)的內(nèi)核安全級別可以用命令:

          sysctl -a |grep securelevel

           

          posted @ 2011-10-20 14:51 ivaneeo 閱讀(301) | 評論 (0)編輯 收藏

          用ssh登錄一個機器(換過ip地址),提示輸入yes后,屏幕不斷出現(xiàn)y,只有按ctrl + c結(jié)束

           

          錯誤是:The authenticity of host 192.168.0.xxx can't be established.

           

          以前和同事碰到過這個問題,解決了,沒有記錄,這次又碰到了不知道怎么處理,還好有QQ聊天記錄,查找到一下,找到解決方案:

           

          執(zhí)行ssh  -o StrictHostKeyChecking=no  192.168.0.xxx 就OK

          posted @ 2011-10-10 18:30 ivaneeo 閱讀(1367) | 評論 (0)編輯 收藏

          先說flash as3吧,可以用root.loaderInfo.parameters

          AS3類 GSPManager.as 代碼:   

          package
          {
              import flash.display.Sprite;
              import flash.events.Event;
              import flash.text.TextField;    
              public class GSPManager extends Sprite
              {
                  public 
          function GSPManager()
                  {
                      
          this.addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
                  }
                  
                  private 
          function addedToStageHandler(e:Event):void
                  {
                      
          this.removeEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
                      
                      init();
                  }
                  private 
          function init():void
                  {            
                      
          var out_txt:TextField = new TextField();
                      
          //邊框
                      out_txt.border = true;
                      
          //邊框顏色
                      out_txt.borderColor = 0x80FF3300;
                      
          //大小
                      out_txt.width = 100;
                      out_txt.height 
          = 20;
                      
          //位置
                      out_txt.x = (stage.stageWidth - out_txt.width)/2;
                      out_txt.y = (stage.stageHeight - out_txt.height)/2;
                      //添加到舞臺
                      addChild(out_txt);
                      
                      
          //獲得參數(shù)對象
                      var param:Object = root.loaderInfo.parameters;
                        
          if (param["name"]!=null
                      {
                                out_txt.text 
          = param["name"+ param["num"];
                                trace(
          "value:"+param["name"]);
                                        
          //判斷
                        } 
                      
          else 
                      {
                              out_txt.text 
          = "null";
                              trace(
          "value:null");
                        }
                  }        
              }
          }

          GetSwfParam.fla 綁定的文檔類為GSPManager.as ,在文檔類綁定框里寫GSPManager這個就可以了

          之后編譯出來的GetSwfParam.swf 就可以添加到頁面了

          Java web頁面代碼:  

          <%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
            
          <head>
            
          </head>
            
            
          <body>
              
          <object id="g" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/_cabs/flash/swflash.cab#version=6,0,29,0" width="300" height="200">
                
          <param name="movie" value="GetSwfParam.swf?name=sange&num=66" />
              <param name="quality" value="high" />
              <param name="allowScriptAccess" value="sameDomain" />    
              <param name="scale" value="exactfit" />
              <embed name="g" src="GetSwfParam.swf" quality="high" scale="exactfit" align="middle" play="true" loop="false" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="200" ></embed>
            </object>
            </body>
          </html>

           

           這里要說的是swf后有很多參數(shù)就用&符號 , 比如GetSwfParam.swf?name=sange&num=66&id=1

           

          現(xiàn)在說Flex了,因為讓同事也做了這樣的東西,但他只會Flex,他沒弄出來,所以我試下,發(fā)現(xiàn)用root沒反映,但我很肯定Flex應(yīng)該也可以弄出來,發(fā)現(xiàn)跟flash as3確實不同,不能用root,因為Flex中沒有root這個概念。問了群里的人,收獲大了,原來就Application,哈哈,不就是根節(jié)點么,也就相當于root,就是名稱不一樣。

          Flex就用Application.application.parameters

          GetSwfParam.mxml 代碼: 

          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#ffffff" layout="absolute" creationComplete="init()">
              
          <mx:Script>
                  
          <![CDATA[
                      private 
          function init():void
                      {
                          
          //獲得參數(shù)對象                
                          var param:Object = Application.application.parameters;
                          
          if(param["name"!= null)
                          {
                              mytxt.text 
          = param["name"];
                          }
                          
          else
                          {
                              mytxt.text 
          = "null";
                          }
                      }
                  ]]
          >
              
          </mx:Script>
              <mx:TextInput id="mytxt" x="60" y="47"/>
          </mx:Application>

           

          把編譯好的swf添加到頁面就可以了。同上,Java web頁面代碼不變。

          posted @ 2011-09-27 14:53 ivaneeo 閱讀(339) | 評論 (0)編輯 收藏

          Flex頁面跳轉(zhuǎn)的五種實現(xiàn)方式

          2010-08-13 13:25 Dboyqiao javaeye.com 我要評論() 字號:T | T
          一鍵收藏,隨時查看,分享好友!

          Flex頁面跳轉(zhuǎn)有很多值得學習的地方,本文向大家介紹一下Flex頁面跳轉(zhuǎn)的幾種方式,主要包括五種方式,這里為大家一一介紹。

          AD:

          在學習Flex的過程中,你可能會遇到Flex頁面跳轉(zhuǎn)的概念,這里和大家分享一下Flex中實現(xiàn)Flex頁面跳轉(zhuǎn)以下幾種方式,相信本文介紹一定會讓你有所收獲。

          Flex頁面跳轉(zhuǎn)

          Flex中實現(xiàn)Flex頁面跳轉(zhuǎn)以下幾種方式:

          Flex頁面跳轉(zhuǎn)方式一:使用ViewStack組件,把要跳轉(zhuǎn)的頁新建成MXMLComponent,然后通過ViewStack組件把這些頁包含進來,然后再通過改變ViewStack的selectedItem或者selectedChild來切換這些頁。

          1. <mx:ViewStackidmx:ViewStackid="storeViews"width="100%"height="550" 
          2. creationPolicy="all"> 
          3. <shouyeidshouyeid="homeView"label="首頁"showEffect="WipeDown"hideEffect="WipeUp"/> 
          4. <leixingidleixingid="pView"label="模板類型"showEffect="WipeDown"hideEffect="WipeUp"/> 
          5. <makeidmakeid="supportView"label="立即制作"showEffect="WipeDown"hideEffect="WipeUp"/> 
          6. </mx:ViewStack> 
          7. <mx:Buttonclickmx:Buttonclick="storeViews.selectedChild=homeView;"/> 
          8.  

          Flex頁面跳轉(zhuǎn)方式二:使用navigateToURL,主要方式如下:

          1. varurl:String="http://localhost:8080/Flex_Java_Demo/  
          2. welcome.html";  
          3. varrequest:URLRequest=newURLRequest(url);  
          4. navigateToURL(request,"_blank");  
          5.  

          這個方法實現(xiàn)Flex頁面切換時會彈出新的頁面,而不是只變換url

          Flex頁面跳轉(zhuǎn)方式三:引用flash中的importflash.external.ExternalInterface這個接口,它能提供像jsp中window.location.href方法一樣方便,主要代碼為:
           

          1. ExternalInterface.call("function(){window.location.  
          2. href='http://localhost:8080/Flex_J2eeDemo  
          3. /bin/Welcome.html';}");  

          Flex頁面跳轉(zhuǎn)方式四:使用組件技術(shù),把不同的頁面做成component,然后通過TabNavigator等進行切換,通過使用state實現(xiàn)跳轉(zhuǎn)。

          Flex頁面跳轉(zhuǎn)方式五:把不同的頁面做成Module,然后使用ModuleLoder來進行加載切換。

          【編輯推薦】

          1. 實現(xiàn)Flex頁面跳轉(zhuǎn)行之有效的辦法
          2. 四種方式實現(xiàn)Flex頁面跳轉(zhuǎn)
          3. 全面認識Flex應(yīng)用程序的六大元素
          4. 揭開Flex正則表達式的神秘面紗
          5. Flex數(shù)據(jù)綁定及其使用頻繁的幾種情況 


           

          【責任編輯:程華權(quán) TEL:(010)68476606】

          網(wǎng)友評論TOP5

          查看所有評論(

          提交評論
          通行證: 密碼:   注冊通行證


          驗證碼: 請點擊后輸入驗證碼 匿名發(fā)表

          posted @ 2011-09-27 14:47 ivaneeo 閱讀(1494) | 評論 (0)編輯 收藏

          flash builder 4.5注冊方法
          2011-06-30 12:53

          先在C:\Windows\System32\drivers\etc的hosts文件中添加以下內(nèi)容,(用記事本打開就行):

          127.0.0.1 activate.adobe.com
          127.0.0.1 practivate.adobe.com
          127.0.0.1 ereg.adobe.com
          127.0.0.1 activate.wip3.adobe.com
          127.0.0.1 wip3.adobe.com
          127.0.0.1 3dns-3.adobe.com
          127.0.0.1 3dns-2.adobe.com
          127.0.0.1 adobe-dns.adobe.com
          127.0.0.1 adobe-dns-2.adobe.com
          127.0.0.1 adobe-dns-3.adobe.com
          127.0.0.1 ereg.wip3.adobe.com
          127.0.0.1 activate-sea.adobe.com
          127.0.0.1 wwis-dubc1-vip60.adobe.com
          127.0.0.1 activate-sjc0.ado


          這是注冊:
          1424-4938-3077-5736-3940-5640
          1424-4827-8874-7387-0243-7331

          posted @ 2011-09-26 17:28 ivaneeo 閱讀(488) | 評論 (0)編輯 收藏

          Flash Builder 4.5高級版試用版免費高速下載

          Company: Adobe

          vcr.cover

          官方下載地址:http://trials3.adobe.com/AdobeProducts/FLBR/4_5/win32/FlashBuilder_4_5_LS10.exe

          1424-4827-8874-7387-0243-7331
          1424-4938-3077-5736-3940-5640
           

          FB4.5 序列號 Flex4.5   5月17日發(fā)布,本人的用第一個已經(jīng)激活成功,大家看看還能用不。

          Adobe Flash Builder 4.5 軟件(曾為 Adobe Flex Builder)是基于 Eclipse的開發(fā)工具,使用 ActionScript 和開源 Flex 框架快速構(gòu)建具有表現(xiàn)力的移動、Web 和桌面應(yīng)用程序。

          最具表現(xiàn)力的體驗

          創(chuàng)建更直觀和更具吸引力的 Web 應(yīng)用程序,幫助人們理解并使用數(shù)據(jù)以支持重要的業(yè)務(wù)活動,從而提高生產(chǎn)力和工作效率。

          用于 Android、iOS 和 RIM 的移動應(yīng)程序

          受益于對移動應(yīng)用程序開發(fā)和測試的新支持,可以使用通用代碼庫構(gòu)建用于 Android、Apple iOS和 Blackberry Tablet OS的應(yīng)用程序,同時共享 Web 應(yīng)用程序的代碼。

          更具生產(chǎn)力,功能更強大

          使用廣泛新工具功能和改進的工具功能加速 Flex 和 ActionScript 項目的代碼編寫和測試過程。

          新集成的 PHP 工具支持

          使用 Flash Builder 4.5 for PHP 中的 Zend Studio 8 軟件完整副本,獲得最佳的 Flex/PHP 開發(fā)體驗。

          Adobe官方下載(本地服務(wù)器)

          Adobe官方下載(國外服務(wù)器)

          本文件大小為581.2M,Adobe獨家提供本地高速下載,您可以通過瀏覽器直接點擊下載或者通過下載加速器(如迅雷、QQ旋風)下載,實際的下載速度和您的實際網(wǎng)絡(luò)環(huán)境相關(guān)。考慮到文件較大,我們推薦您使用具有斷點續(xù)傳功能的下載加速器輔助下載。

          官方下載地址:http://trials3.adobe.com/AdobeProducts/FLBR/4_5/win32/FlashBuilder_4_5_LS10.exe

          1424-4827-8874-7387-0243-7331
          1424-4938-3077-5736-3940-5640
           

          FB4.5 序列號 Flex4.5   5月17日發(fā)布,本人的用第一個已經(jīng)激活成功,大家看看還能用不。

          posted @ 2011-09-26 16:58 ivaneeo 閱讀(1148) | 評論 (1)編輯 收藏

          引言

          Apache Axis2(主要的開源 Web 服務(wù)平臺之一)提供了一系列新功能,最為可貴的是,其中的很多功能都對向開發(fā)人員提供更為用戶友好的方法起到了促進作用。在之前的 Axis 版本中,并不十分重視用戶友好性。例如,在 Axis1 中,用戶必須手動調(diào)用管理客戶機并更新服務(wù)器類路徑,然后重新啟動服務(wù)器以應(yīng)用更改。這個有點麻煩的部署模型對新手肯定是一道障礙。因此,Axis2 經(jīng)過了精心的設(shè)計,能夠克服此缺點,并提供更為靈活、可方便進行配置的部署模型。

          Axis2 部署新功能

          Axis2 部署模型將一系列新功能引入了 Apache Web 服務(wù)堆棧中(其中一些功能對于 Web 服務(wù)范式并非新事物)。以下列出了最為重要的主要更改和新功能:

          • 類似于 Java™ 2 Platform Enterprise Edition (J2EE) 的部署機制(基于存檔)
          • 熱部署和熱更新
          • 存儲庫(可以在其中放置服務(wù)和模塊)
          • 處理程序(模塊)部署的更改
          • 新部署描述符
          • 多個部署選項

          在下面的內(nèi)容中,我們將逐個對每個方面進行詳細討論。

          回頁首

          類似于 J2EE 的部署機制

          在任何 J2EE 應(yīng)用服務(wù)器中,都可以將應(yīng)用程序作為自包含包部署,可以將所有的資源、配置文件和二進制文件打包為一個文件并進行部署。這顯然非常實用,而也正是因為如此,Axis2 也引入了相同的機制來更方便地部署服務(wù)(和模塊)。

          考慮這樣的情況,假如您有一個存在多個第三方依賴關(guān)系和一組屬性文件的服務(wù),同時假定沒有類似于 J2EE 的部署機制。必須手動將所有這些依賴 JAR 文件和屬性文件放入類路徑中。如果有一個或兩個服務(wù)器,這項工作的量將翻倍!在存在數(shù)百副本的集群環(huán)境中,將依賴 JAR 文件和其他資源添加到類路徑中的做法并不實際。有了類似于 J2EE 的部署機制后,就沒有這些問題了,只需要將服務(wù)放入副本中,而不需要進行任何其他工作了。

          Axis2 自包含包(或存檔文件)的內(nèi)部結(jié)構(gòu)如圖 1 中所示。兩種 Axis2 服務(wù)(存檔和模塊存檔)非常相似。二者之間的細微差別包括:

          • 對于 Axis 服務(wù),描述符文件是 services.xml;而對于 Axis 模塊,描述符文件是 module.xml。
          • Axis2 服務(wù)的文件擴展名是 .aar(服務(wù)的文件名將為 foo.aar),模塊的文件擴展名為 .mar(模塊的文件名將為 foo.mar)。

          圖 1. 存檔文件的結(jié)構(gòu)
          存檔文件的結(jié)構(gòu) 

          回頁首

          熱部署和熱更新

          對于企業(yè)級應(yīng)用程序,可用性是一個大問題。即使短時間的停機都可能帶來很大損失,因此重新啟動服務(wù)器并不是一個較好的做法。需要在不用關(guān)閉系統(tǒng)的情況下對其進行更新。而這就是熱部署和熱更新的用武之地。熱部署和熱更新是 Apache Web 服務(wù)堆棧(如 Axis 和 Axis2)中的新功能。這兩個新功能如下所述:

          • 熱部署是指在系統(tǒng)啟動并運行的情況下部署新服務(wù)的能力。例如,假定您有兩個服務(wù)——service1 和 service2——已啟動并運行,現(xiàn)在要在不用關(guān)閉系統(tǒng)的情況下部署名為 service3 的新服務(wù)。部署 service3 就是一個熱部署場景。作為系統(tǒng)管理員,如果不喜歡服務(wù)的熱部署,則可以通過更改名為 axis2.xml 的 Axis2 全局配置文件,將全局配置參數(shù)更改為以下所示,從而關(guān)閉此功能:<parameter name="hotdeployment">false</parameter>
          • 熱更新是指在不關(guān)閉系統(tǒng)的情況下更改現(xiàn)有 Web 服務(wù)的能力。這是一個重要的特性,是測試環(huán)境中需要的一個功能。不過,在實時系統(tǒng)中使用熱更新并不明智,因為這可能導致系統(tǒng)進入未知狀態(tài)。此外,還可能會丟失該服務(wù)的現(xiàn)有服務(wù)數(shù)據(jù)。為了防止出現(xiàn)這種情況,Axis2 缺省將熱更新參數(shù)設(shè)置為 FALSE。如果希望使用此功能,請按照以下所示更改配置參數(shù),從而啟用此功能:<parameter name="hotupdate">true</parameter>

          回頁首

          存儲庫

          Axis2 存儲庫實際上就是文件系統(tǒng)中具有特定結(jié)構(gòu)的目錄。它可以位于本地,也可以位于遠程計算機上。之所以引入存儲庫概念,目的是為了方便地支持基于存檔的熱部署功能。

          存儲庫目錄包含兩個主要子目錄,分別名為 services 和 modules。還可能有一個可選的子目錄,名為 lib。如果希望部署服務(wù),需要將服務(wù)存檔文件放入 services 目錄中。類似地,如果希望部署模塊,請將模塊存檔文件放入 modules 目錄。對于 lib 目錄,要將其作為放置對服務(wù)和模塊公用的第三方庫的位置。圖 2 顯示了存儲庫的圖形表示形式。


          圖 2. Axis2 存儲庫
          Axis2 存儲庫 

          注意:如果 modules 目錄中的部分或全部模塊希望共享某些資源,可以將這些資源添加到 modules 目錄中的 lib 目錄內(nèi)。類似地,如果 services 目錄中的全部或部分服務(wù)希望共享公共資源,恰當?shù)奈恢檬窃?services 目錄內(nèi)的 lib 目錄。

          回頁首

          處理程序(模塊)部署的更改

          服務(wù)擴展(或模塊)的概念是 Apache Axis 范式的一個新功能。其基本思想是對系統(tǒng)的核心功能進行擴展或提供服務(wù)質(zhì)量保證。對于 Axis1,如果希望擴展其核心功能,則需要編寫處理程序(執(zhí)行鏈中的最小單位),更改全局配置文件添加該處理程序,最后要重新啟動系統(tǒng)。

          模塊進行相同的工作,但會減少所需進行的工作量。同時,模塊可以通過使用模塊描述文件 modul.xml 來包含一個或多個處理程序。大多數(shù)情況下,模塊是特定 WS 規(guī)范的實現(xiàn),例如 Axis2 addressing 模塊就是 WS-Addressing 的實現(xiàn)。

          如前面提到的,可以將模塊作為存檔文件部署。模塊存檔文件的結(jié)構(gòu)如圖 3 中所示。


          圖 3. 模塊存檔文件的結(jié)構(gòu) 
          模塊存檔文件的結(jié)構(gòu)  

          回頁首

          新部署描述符

          Axis2 的靈活性和可擴展性的重點是其部署描述符。將不再僅處理一個配置文件,而是針對不同的配置級別有不同的配置文件。例如,如果希望向系統(tǒng)添加處理程序,則沒有必要更改全局配置;可以通過僅更改模塊配置文件來完成此工作。Axis2 中有三種類型的描述符或配置文件:

          • 全局描述符 (axis2.xml)
          • 服務(wù)描述符 (services.xml)
          • 模塊描述符 (module.xml)

          在全局描述符中,所有系統(tǒng)級的配置都在 axis2.xml 中給出,包括以下內(nèi)容:

          • 參數(shù)
          • 傳輸發(fā)送方
          • 傳輸偵聽器
          • 階段
          • 全局模塊

          Axis2 提供了缺省 axis2.xml。其中包含啟動 Axis2 所需的最小配置,但可以自由對其進行更改,從而使用您自己的 axis2.xml 啟動 Axis2。務(wù)必注意,如果對 axis2.xml 進行了任何更改,則必須重新啟動系統(tǒng),以使這些更改生效。

          在服務(wù)描述符中,由 services.xml 給出關(guān)于服務(wù)的配置。為了使服務(wù)有效,需要在服務(wù)存檔文件中包含 services.xml 文件。服務(wù)配置文件包含以下內(nèi)容:

          • 服務(wù)級別的參數(shù)
          • 服務(wù)的描述
          • 消息接收方
          • 需要作為 Web 操作(服務(wù)中的操作)公開的操作
          • 服務(wù)級別的模塊

          模塊描述符文件 (module.xml) 包含將模塊插入到系統(tǒng)中所需的配置數(shù)據(jù)。主要配置包括以下方面:

          • 處理程序及其階段規(guī)則
          • 模塊參數(shù)

          務(wù)必注意,module.xml 還可能包含以下元素:

          • 關(guān)于模塊的描述(及其實現(xiàn)的規(guī)范)
          • 端點(對于可靠消息傳遞的情況,就是類似于 create sequence 的端點)

          回頁首

          Axis2 中可用的部署方法

          在 Axis2 中,可采用三種主要方式部署服務(wù):

          • 將服務(wù)存檔文件放入存儲庫中。
          • 使用存檔文件以編程方式創(chuàng)建服務(wù)。
          • 將服務(wù)作為傳統(tǒng) Java 對象(Plain Old Java Object,POJO)部署。

          在 Axis2 中,部署服務(wù)的最常用方法是直接將服務(wù)存檔文件復制或放置到存儲庫中(services 目錄)。如果使用基于 Axis2 WAR 文件的分發(fā)版本,則有兩個選擇:

          • 手動將存檔文件放置到存儲庫中。
          • 使用 Web 控制臺上載服務(wù)。

          以編程方式部署并非用戶需求,而是模塊創(chuàng)建者的需求,因為某些模塊要求 Web 服務(wù)的部署提供模塊的全部功能。若要以編程方式創(chuàng)建服務(wù),需要使用 services.xml、類加載器(可用于加載您的類文件)和 AxisConfiguration。此方法的優(yōu)勢在于,您并不需要將服務(wù)存檔文件復制到存儲庫中,而且僅在運行時服務(wù)才可見。清單 1 可幫助您形成對編程服務(wù)部署方法的基本認識。


          清單 1. 編程服務(wù)部署
                          AxisConfiguration axisConfig;  // you need to have reference to AxisConfiguration  File file = new File("Location of the file""); ClassLoader clsLoader = new URLClassLoader(new URL[]{file.toURL()}); InputStream in = new FileInputStream("location of service.xml"); AxisService service = DeploymentEngine.buildService(in, clsLoader, axisConfig); 

          使用 Java 類部署服務(wù)是 Axis2 中提供的一項使用非常方便的功能,在這種情況下沒有必要生成服務(wù)存檔文件或 services.xml。唯一的要求是,必須在創(chuàng)建服務(wù)前將 Java 類放入類路徑中。在運行時,可以由模塊或服務(wù)創(chuàng)建新服務(wù)并進行部署。在 Axis2 中部署 POJO 僅需要三行代碼,如清單 2 中所示。


          清單 2. 在 Axis2 中部署 POJO
                          AxisService service = AxisService.createService(  MyService.class.getName(), axisConfig, RPCMessageReceiver.class); axisConfig.addService(service); 

          回頁首

          總結(jié)

          Axis2 在這里并不是證明 Web 服務(wù)概念,而是提供更好的 SOAP 處理模型,且相對于 Axis1 及其他現(xiàn)有 Web 服務(wù)引擎而言,此模型在速度和內(nèi)存方面性能有了很大的改善。此外,它還提供了方便的部署機制。現(xiàn)在已經(jīng)進入 Axis2 的時代了!

          posted @ 2011-08-24 16:27 ivaneeo 閱讀(312) | 評論 (0)編輯 收藏

          一、環(huán)境安裝(tomcat,本人5.5): 
          首先下載到官方網(wǎng)站下載axis2 war包。 
          將war包復制到webapps目錄下邊,啟動tomcat,服務(wù)器加載了war包后會生成axis2目錄,跟我們平時的應(yīng)用目錄沒神馬區(qū)別,唯一要注意的是axis的配置文件在WEB-INFconf, 
          在開發(fā)過程中要修改一下這個的配置文件。 

          二、(改造配置文件): 
          配置axis2的文件,axis2支持熱部署,意味著你可以再編譯好的class文件,直接復制到pojo目錄下(默認是pojo,等會有說明修改)。 
          在配置文件中找到<parameter name="hotdeployment">true</parameter>默認已經(jīng)為熱部署; 
          另外一個在開發(fā)過程中你常需要把熱更新打開,默認是false 不打開,找到hotupdate 
          <parameter name="hotupdate">true</parameter> 
          發(fā)布pojo的目錄只是默認的,如果需要使用其他的目錄,需要添加配置元素,在axisconfig下面添加 
          <deployer extension=".class" directory="mymulu" class="org.apache.axis2.deployment.POJODeployer"/> 
          上面的配置文件只需要修改 directory的屬性,改為目錄名 

          二、(使用POJO方式發(fā)布webservice): 
          在pojo目錄(此目錄沒有,在axis2WEB-INF下面創(chuàng)建,其實細心的同學會發(fā)現(xiàn),在配置文件axis就已經(jīng)給我們定義了pojo目錄,看前面添加發(fā)布pojo目錄)下面的webservice可以通過重寫url去訪問(后面帶一些參數(shù),類似action),如果遇到數(shù)據(jù)類型則需要做轉(zhuǎn)換,原因傳輸過程是以字符串形式傳輸,而且重寫URL的參數(shù)名必須要與方法的參數(shù)名相同。感覺比較土的方法 

          好吧說了那么多,現(xiàn)在讓我們來個helloworld吧~!! 
          首先我們先發(fā)布一個webservice, 
          編寫一個MyTest類

          public class MyTest { 	 	public String getString(String str){ 		System.out.println("調(diào)用了getString()傳入?yún)?shù)"+str); 		return str; 	} 	public void doNoThing(String str){ 		System.out.println("調(diào)用了doNothing()傳入?yún)?shù):"+str); 	}  } 


          1.啟動你的tomcat,訪問這個url:http://127.0.0.1:8080/axis2/ (確保axis2是正常運行了), 
          2.神馬,沒改配置文件,好吧,就在%tomcat_home%webappsaxis2WEB-INF下面建立一個pojo文件夾。編寫好的類編譯成class文件后,直接復制到你所指定的目錄下。 
          3.最后訪問你的服務(wù)吧http://127.0.0.1:8080/axis2/services/MyTest?wsdl 


          現(xiàn)在開始客戶端開發(fā),這里省略了使用axis的API開發(fā)客戶端,個人覺得這樣的開發(fā)效率好低吖,新手上手(本人懶的去看那個API),應(yīng)該快速掌握怎么使用,所以這里介紹stub方式,使用了axis自帶的命令,可以根據(jù)wsdl生成客戶端,在%AXIS2_HOME%in目錄下有一個wsdl2java腳本(注意是wsdl to java)。 
          前提準備 
          下載了axis2 bin 文件,配置環(huán)境變量 例如: 
          變量名:AXIS2_HOME  
          值:E:studywebserviceaxis2-1.5.4-binaxis2-1.5.4 

          這里要用到前面的發(fā)布的webservice,保持你的服務(wù)器是啟動的,你的服務(wù)正常。 
          打開CMD 
          輸入下面的命令 
          %AXIS2_HOME%/bin/wsdl2java -uri http://localhost:8080/axis2/services/MyTest?wsdl -p com.lj.mywebservice  -s -o c:/mywebservice 

          這里說一下參數(shù), -uri 當然是服務(wù)的wsdl文件地址,-p 報名 , -o 表示目錄,這里寫的是絕對路徑,也可以寫相對路徑 

          回車,你會發(fā)現(xiàn)在C盤下多了一個文件目錄,打開里邊一層層進去后,有一個MyTestStub類,這個類實現(xiàn)非常復雜,不用管他,拿過來直接用。 
          新建一個工程,寫個測試類,把剛才生成的類復制進去,當然別忘記了引入axis的jar包。

          package com.lj.myswebservice;  import java.rmi.RemoteException;  import org.apache.axis2.AxisFault;  public class TestClass { 	public static void main(String[] args) { 		 		try { 			MyTestStub my=new MyTestStub(); 			//在MYTestStub里邊定義了三個靜態(tài)嵌套類,分別作為參數(shù)對象,返回值對象。 			//這里定義了donothing方法的參數(shù)對象 			MyTestStub.DoNoThing donothing=new MyTestStub.DoNoThing(); 			//這里定義了getstring方法的參數(shù)對象 			MyTestStub.GetString getstring=new MyTestStub.GetString(); 			////這里定義了getString方法的返回值對象 			MyTestStub.GetStringResponse getstringresponse=new MyTestStub.GetStringResponse(); 			//設(shè)置參數(shù)值 			donothing.setArgs0("神馬也不做啊"); 			//設(shè)置參數(shù)值 			getstring.setArgs0("我是帥鍋"); 			//調(diào)用donothing方法 			my.doNoThing(donothing); 			//調(diào)用getString發(fā)放,設(shè)置參數(shù),并返回值 			getstringresponse=my.getString(getstring); 			//打印返回值 			System.out.println(getstringresponse.get_return()); 		} catch (AxisFault e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} catch (RemoteException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} 		 	} }  


          運行結(jié)果如下。 
          <!--StartFragment -->

           
          服務(wù)器結(jié)果如下。 
          <!--StartFragment -->



          總結(jié),使用axis2構(gòu)建服務(wù)是非常快的,這個例子使用的是deploy pojo的方式發(fā)布服務(wù),所謂pojo就是個普通的JAVA類,與javabean區(qū)別就是不一定有g(shù)et set方法(是不是這樣理解?)。在客戶端調(diào)用服務(wù)的時候,采取stub方式(貌似現(xiàn)在很流行,這樣編寫客戶端是灰常直觀的),只要拿到wsdl文件,就可以使用 wsdl2java命令生成客戶端,大大減少了開發(fā)量。

          還差得遠( ⊙ o ⊙ )啊!··明晚再看看別的方式發(fā)布鳥··

          晚了睡覺了··明天早起上班( ⊙ o ⊙ )啊!···

          posted @ 2011-08-24 11:08 ivaneeo 閱讀(685) | 評論 (0)編輯 收藏

          www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服務(wù)器IP。

            用戶訪問http://www.s135.com,將其負載均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四臺服務(wù)器。

            用戶訪問http://blog.s135.com,將其負載均衡到192.168.1.7服務(wù)器的8080、8081、8082端口。

            以下為配置文件nginx.conf:

          引用
          user  www www;

          worker_processes 10;

          #error_log  logs/error.log;
          #error_log  logs/error.log  notice;
          #error_log  logs/error.log  info;

          #pid        logs/nginx.pid;

          #最大文件描述符
          worker_rlimit_nofile 51200;

          events
          {
                use epoll;

                worker_connections 51200;
          }

          http
          {
                include       conf/mime.types;
                default_type  application/octet-stream;

                keepalive_timeout 120;

                tcp_nodelay on;

                upstream  www.s135.com  {
                        server   192.168.1.2:80;
                        server   192.168.1.3:80;
                        server   192.168.1.4:80;
                        server   192.168.1.5:80;
                }

                upstream  blog.s135.com  {
                        server   192.168.1.7:8080;
                        server   192.168.1.7:8081;
                        server   192.168.1.7:8082;
                }

                server
                {
                        listen  80;
                        server_name  www.s135.com;

                        location / {
                                 proxy_pass        http://www.s135.com;
                                 proxy_set_header   Host             $host;
                                 proxy_set_header   X-Real-IP        $remote_addr;
                                 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                        }

                        log_format  www_s135_com  '$remote_addr - $remote_user [$time_local] $request '
                                          '"$status" $body_bytes_sent "$http_referer" '
                                          '"$http_user_agent" "$http_x_forwarded_for"';
                        access_log  /data1/logs/www.log  www_s135_com;
                }

                server
                {
                        listen  80;
                        server_name  blog.s135.com;

                        location / {
                                 proxy_pass        http://blog.s135.com;
                                 proxy_set_header   Host             $host;
                                 proxy_set_header   X-Real-IP        $remote_addr;
                                 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                        }

                        log_format  blog_s135_com  '$remote_addr - $remote_user [$time_local] $request '
                                          '"$status" $body_bytes_sent "$http_referer" '
                                          '"$http_user_agent" "$http_x_forwarded_for"';
                        access_log  /data1/logs/blog.log  blog_s135_com;
                }
          }

            附:Nginx 的安裝方法可參照《Nginx 0.5.31 + PHP 5.2.4(FastCGI)搭建可承受3萬以上并發(fā)連接數(shù),勝過Apache 10倍的Web服務(wù)器》文章的以下段落(僅做負載均衡,無需支持PHP的安裝方法):

            二、安裝PHP 5.2.4(FastCGI模式)
            4、創(chuàng)建www用戶和組,以及其使用的目錄:

            三、安裝Nginx 0.5.31
            1、安裝Nginx所需的pcre庫:
            2、安裝Nginx
            3、創(chuàng)建Nginx日志目錄
            5、啟動Nginx
          posted @ 2011-08-16 11:55 ivaneeo 閱讀(280) | 評論 (0)編輯 收藏

          vc2008確實好使,不過缺陷也非常明顯,只要是它編譯的東西,在其他電腦經(jīng)常會出現(xiàn)無法順利運行的情況,最常見的錯誤就是:“由于應(yīng)用程序配置不正確,應(yīng)用程序未能啟動。重新安裝應(yīng)用程序可能會糾正這個問題。”

          經(jīng)過各種努力,最后發(fā)現(xiàn),一般情況下只需要安裝一下vcredist_x86.exe這個vc的可重發(fā)行組件包就可以了。其主要原理是因為vc2008的版本比較高,其編譯時鏈接的相關(guān)dll版本比xp下的高太多,而我們在xp下運行的時候調(diào)用的是老版本的dll,所以出現(xiàn)了問題。安裝新版的可重發(fā)行組件包后,舊版本的dll被替換成新版本的,問題就解決了。

          可是又出現(xiàn)了新的問題,總不能讓用戶使用我們軟件的時候,非要去安裝其他組件吧~~而且,其他很多軟件都是用vc開發(fā)的,這些軟件為什么不需要呢?本著鉆牛角尖的態(tài)度,進行了更深一步的探索;

          最近研究ccv,突然發(fā)現(xiàn)ccv的bin目錄下有一個Microsoft.VC90.CRT目錄,下面有幾個dll文件,還有一個manifast文件。看到這個不禁眼前一亮,在我的程序中把這幾個文件打包進去就ok了吧?于是進行嘗試,查找本機安裝vs2008目錄下的Microsoft.VC90.CRT目錄一頓cp,結(jié)果,很沮喪,測試失敗~~告一段落~~

          某天又在網(wǎng)上發(fā)現(xiàn)有人在帖子里的回答,其中兩個字吸引了我:“版本”。我靈機一動,趕緊去查看版本,發(fā)現(xiàn)我當前的版本是9.0.30729.4148,而帖子里的manifast文件中的版本是9.0.21022.8。于是,我趕緊找了一個這個版本的下載下來,替換我的程序中的這幾個dll和manifast,再運行,果然成功了。

           

          因此得到以下結(jié)論:

          1、可重發(fā)行組件包是沒問題的,肯定可以用,因為它替換了系統(tǒng)的這幾個dll,所以可行;

          2、如果不想在自己的“綠色”軟件的基礎(chǔ)上再要安裝這么個組件,或者自己的非綠色軟件在安裝的過程中再安裝這么個組件,只需要處理這幾個關(guān)鍵的dll就行啦。

          3、即使有了這幾個dll也不一定行,一定要注意版本!實在不行這幾個版本多試一試。我到現(xiàn)在還不太明白,我的vs2008的版本是9.0.30729.4148,編譯出來的東西應(yīng)該也是這個版本的啊,可是為什么用了老版本才好用,新版本的反而不好用呢?

          4、具體文件如下:

          Microsoft.VC90.CRT.manifest

          msvcm90.dll

          msvcp90.dll

          msvcr90.dll

          posted @ 2011-07-25 14:15 ivaneeo 閱讀(518) | 評論 (0)編輯 收藏

          僅列出標題
          共67頁: First 上一頁 11 12 13 14 15 16 17 18 19 下一頁 Last 
          主站蜘蛛池模板: 汽车| 洞头县| 汨罗市| 南汇区| 扬中市| 湾仔区| 沙雅县| 扶绥县| 冕宁县| 大化| 牙克石市| 伊通| 疏勒县| 北安市| 呼伦贝尔市| 乌什县| 额敏县| 城口县| 仪征市| 石台县| 桐乡市| 沿河| 西昌市| 白山市| 东光县| 扶绥县| 三河市| 昭平县| 乌拉特前旗| 宝兴县| 苏尼特左旗| 中江县| 吉林市| 鹿邑县| 出国| 佛教| 苏尼特右旗| 内丘县| 方正县| 东丰县| 时尚|