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

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

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

    ivaneeo's blog

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

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

    #

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

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

    可以使用 init 來(lái)改變當(dāng)前運(yùn)行級(jí)別。舉個(gè)例子:

     # init 5                       # 進(jìn)入運(yùn)行級(jí)別 5

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

     # chkconfig --list             # 列出所有 init 腳本
     # chkconfig --list sshd        # 查看 sshd 在各個(gè)運(yùn)行級(jí)別中的啟動(dòng)配置
     # chkconfig sshd --level 35 on # 對(duì) sshd 在級(jí)別 3 和 5 下創(chuàng)建啟動(dòng)項(xiàng)
     # chkconfig sshd off           # 在所有的運(yùn)行級(jí)別下禁用 sshd

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

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

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

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

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

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

    sysctl -a |grep securelevel

     

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

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

     

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

     

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

     

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

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

    先說(shuō)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;
                //添加到舞臺(tái)
                addChild(out_txt);
                
                
    //獲得參數(shù)對(duì)象
                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這個(gè)就可以了

    之后編譯出來(lái)的GetSwfParam.swf 就可以添加到頁(yè)面了

    Java web頁(yè)面代碼:  

    <%@ 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>

     

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

     

    現(xiàn)在說(shuō)Flex了,因?yàn)樽屚乱沧隽诉@樣的東西,但他只會(huì)Flex,他沒弄出來(lái),所以我試下,發(fā)現(xiàn)用root沒反映,但我很肯定Flex應(yīng)該也可以弄出來(lái),發(fā)現(xiàn)跟flash as3確實(shí)不同,不能用root,因?yàn)镕lex中沒有root這個(gè)概念。問(wèn)了群里的人,收獲大了,原來(lái)就Application,哈哈,不就是根節(jié)點(diǎn)么,也就相當(dāng)于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ù)對(duì)象                
                    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添加到頁(yè)面就可以了。同上,Java web頁(yè)面代碼不變。

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

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

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

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

    AD:

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

    Flex頁(yè)面跳轉(zhuǎn)

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

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

    1. <mx:ViewStackidmx:ViewStackid="storeViews"width="100%"height="550" 
    2. creationPolicy="all"> 
    3. <shouyeidshouyeid="homeView"label="首頁(yè)"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頁(yè)面跳轉(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.  

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

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

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

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

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

    【編輯推薦】

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


     

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

    網(wǎng)友評(píng)論TOP5

    查看所有評(píng)論(

    提交評(píng)論
    通行證: 密碼:   注冊(cè)通行證


    驗(yàn)證碼: 請(qǐng)點(diǎn)擊后輸入驗(yàn)證碼 匿名發(fā)表

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

    flash builder 4.5注冊(cè)方法
    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


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

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

    Flash Builder 4.5高級(jí)版試用版免費(fèi)高速下載

    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 序列號(hào) Flex4.5   5月17日發(fā)布,本人的用第一個(gè)已經(jīng)激活成功,大家看看還能用不。

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

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

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

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

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

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

    使用廣泛新工具功能和改進(jìn)的工具功能加速 Flex 和 ActionScript 項(xiàng)目的代碼編寫和測(cè)試過(guò)程。

    新集成的 PHP 工具支持

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

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

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

    本文件大小為581.2M,Adobe獨(dú)家提供本地高速下載,您可以通過(guò)瀏覽器直接點(diǎn)擊下載或者通過(guò)下載加速器(如迅雷、QQ旋風(fēng))下載,實(shí)際的下載速度和您的實(shí)際網(wǎng)絡(luò)環(huán)境相關(guān)。考慮到文件較大,我們推薦您使用具有斷點(diǎ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 序列號(hào) Flex4.5   5月17日發(fā)布,本人的用第一個(gè)已經(jīng)激活成功,大家看看還能用不。

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

    引言

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

    Axis2 部署新功能

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

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

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

    回頁(yè)首

    類似于 J2EE 的部署機(jī)制

    在任何 J2EE 應(yīng)用服務(wù)器中,都可以將應(yīng)用程序作為自包含包部署,可以將所有的資源、配置文件和二進(jìn)制文件打包為一個(gè)文件并進(jìn)行部署。這顯然非常實(shí)用,而也正是因?yàn)槿绱耍珹xis2 也引入了相同的機(jī)制來(lái)更方便地部署服務(wù)(和模塊)。

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

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

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

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

    回頁(yè)首

    熱部署和熱更新

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

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

    回頁(yè)首

    存儲(chǔ)庫(kù)

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

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


    圖 2. Axis2 存儲(chǔ)庫(kù)
    Axis2 存儲(chǔ)庫(kù) 

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

    回頁(yè)首

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

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

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

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


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

    回頁(yè)首

    新部署描述符

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

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

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

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

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

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

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

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

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

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

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

    回頁(yè)首

    Axis2 中可用的部署方法

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

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

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

    • 手動(dòng)將存檔文件放置到存儲(chǔ)庫(kù)中。
    • 使用 Web 控制臺(tái)上載服務(wù)。

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


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


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

    回頁(yè)首

    總結(jié)

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

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

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

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

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

    好吧說(shuō)了那么多,現(xiàn)在讓我們來(lái)個(gè)helloworld吧~!! 
    首先我們先發(fā)布一個(gè)webservice, 
    編寫一個(gè)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.啟動(dòng)你的tomcat,訪問(wèn)這個(gè)url:http://127.0.0.1:8080/axis2/ (確保axis2是正常運(yùn)行了), 
    2.神馬,沒改配置文件,好吧,就在%tomcat_home%webappsaxis2WEB-INF下面建立一個(gè)pojo文件夾。編寫好的類編譯成class文件后,直接復(fù)制到你所指定的目錄下。 
    3.最后訪問(wèn)你的服務(wù)吧http://127.0.0.1:8080/axis2/services/MyTest?wsdl 


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

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

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

    回車,你會(huì)發(fā)現(xiàn)在C盤下多了一個(gè)文件目錄,打開里邊一層層進(jìn)去后,有一個(gè)MyTestStub類,這個(gè)類實(shí)現(xiàn)非常復(fù)雜,不用管他,拿過(guò)來(lái)直接用。 
    新建一個(gè)工程,寫個(gè)測(cè)試類,把剛才生成的類復(fù)制進(jìn)去,當(dāng)然別忘記了引入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里邊定義了三個(gè)靜態(tài)嵌套類,分別作為參數(shù)對(duì)象,返回值對(duì)象。 			//這里定義了donothing方法的參數(shù)對(duì)象 			MyTestStub.DoNoThing donothing=new MyTestStub.DoNoThing(); 			//這里定義了getstring方法的參數(shù)對(duì)象 			MyTestStub.GetString getstring=new MyTestStub.GetString(); 			////這里定義了getString方法的返回值對(duì)象 			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(); 		} 		 	} }  


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

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



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

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

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

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

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

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

      用戶訪問(wèn)http://blog.s135.com,將其負(fù)載均衡到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萬(wàn)以上并發(fā)連接數(shù),勝過(guò)Apache 10倍的Web服務(wù)器》文章的以下段落(僅做負(fù)載均衡,無(wú)需支持PHP的安裝方法):

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

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

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

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

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

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

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

     

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

    1、可重發(fā)行組件包是沒問(wèn)題的,肯定可以用,因?yàn)樗鎿Q了系統(tǒng)的這幾個(gè)dll,所以可行;

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

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

    4、具體文件如下:

    Microsoft.VC90.CRT.manifest

    msvcm90.dll

    msvcp90.dll

    msvcr90.dll

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

    僅列出標(biāo)題
    共67頁(yè): First 上一頁(yè) 11 12 13 14 15 16 17 18 19 下一頁(yè) Last 
    主站蜘蛛池模板: 男女啪啪永久免费观看网站| 夭天干天天做天天免费看| 成人免费无遮挡无码黄漫视频| 在线播放亚洲第一字幕| 久久亚洲AV成人无码国产| 色偷偷亚洲男人天堂| 免费国产成人午夜在线观看| 女人被弄到高潮的免费视频| 亚洲精品无码久久千人斩| 中文字幕第13亚洲另类| 亚洲色婷婷综合久久| 日韩亚洲国产高清免费视频| 巨胸喷奶水视频www免费视频| 大地资源免费更新在线播放| 亚洲成AV人片在线观看ww| 亚洲欧美日韩国产精品一区| 日韩免费的视频在线观看香蕉| 日韩免费观看的一级毛片| 久久青青草原亚洲AV无码麻豆| 国产亚洲精品成人AA片| 久久国产乱子精品免费女| 国产免费观看黄AV片| 亚洲精品偷拍无码不卡av| 亚洲色丰满少妇高潮18p| 国产拍拍拍无码视频免费| 国产免费观看黄AV片 | 亚洲AV伊人久久青青草原| 亚洲免费二区三区| 中文字幕乱码免费看电影| 国产一区在线观看免费| 亚洲制服丝袜在线播放| 最新久久免费视频| 免费v片在线观看无遮挡| youjizz亚洲| 免费无码中文字幕A级毛片| 国产午夜亚洲精品理论片不卡| 亚洲精品国产高清在线观看| av成人免费电影| 在线观看亚洲免费视频| 亚洲一区二区三区在线| 日韩在线永久免费播放|