finly

          工作、讀書、運(yùn)動(dòng)

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            5 隨筆 :: 0 文章 :: 3 評論 :: 0 Trackbacks

          2006年11月21日 #

          安裝版
          進(jìn)入%TOMCAT_HOME%/BIN執(zhí)行
          tomcat5.exe //US//Tomcat5 --JvmMs=128 --JvmMx=512

          普通版
          設(shè)置CATALINA_OPTS -Xmx512m
          TOMCAT_OPTS -Xmx512m
          posted @ 2007-04-05 19:33 finly 閱讀(898) | 評論 (0)編輯 收藏

          昨天真郁悶....部門老大給我提出了一種難于想象的需求,通常我們從網(wǎng)站上下載文件都有IE彈出框。
          而他對我的要求是:不要彈出IE對話框,點(diǎn)按鈕后直接把文件保存到本地。
          當(dāng)時(shí)即時(shí)暈倒,都不知道是什么客戶來的,居然有這種需求。-_-!
          綜合考慮后,我決定用applet在客戶端運(yùn)行一段代碼。在客戶端里用apache的開源項(xiàng)目httpClient模擬http請求(如輸入用戶名密碼登陸,瀏覽某個(gè)連接下載等)。由于要涉及到讀寫客戶端的磁盤文件,所以在客戶端運(yùn)行程序的時(shí)候必定會(huì)拋出securityException。當(dāng)時(shí)在這里折騰了很久,老是把注意力里集中在修改客戶端的安全策略文件上。
          事實(shí)上,有一種更好的辦法,那就是對applet程序所依賴的jar包進(jìn)行數(shù)字簽名。
          步驟如下:
          打開命令行窗口,定位到c:/目錄下。
          1keytool -genkey -keystore pepper.store -alias pepper

            這個(gè)命令用來產(chǎn)生一個(gè)密匙庫,執(zhí)行完畢后應(yīng)該在c:/中產(chǎn)生一個(gè)pepper.store的文件,這里的pepper是我自己的名字,你可以對它進(jìn)行修改。另外在執(zhí)行命令的時(shí)候還有提示你輸入密匙庫的密碼,這里你一定要記住,否則后面要用的時(shí)候無法輸入。

          2
          keytool -export -keystore pepper.store -alias pepper -file pepper.cert
            這個(gè)命令用來產(chǎn)生簽名時(shí)所要用的證書,同樣這里的pepper也可以換成你自己需要的名字。這個(gè)命令執(zhí)行完后在c:/中產(chǎn)生一個(gè)pepper.cert的文件。

          3
          jarsigner -keystore pepper.store myapplet.jar pepper
            這個(gè)命令用上面產(chǎn)生的證書將我們的jar文件進(jìn)行了簽名。(myapplet.jar是我們項(xiàng)目中所依賴的jar包)

          執(zhí)行完以上三步之后,就已經(jīng)完全可以了。而不需要像網(wǎng)上某些文章說的那樣還要修改客戶端的安全策略文件。
          最后在頁面上把a(bǔ)pplet標(biāo)記加上
          <applet code="Tasdf.class" CODEBASE = "." archive="myapplet.jar" width=30 height=15>
          </applet>
          posted @ 2006-12-01 10:15 finly 閱讀(1067) | 評論 (2)編輯 收藏

          Mule是一個(gè)基于ESB架構(gòu)的消息平臺,Mule 的核心是一個(gè)基于SEDA(Staged Event Driven Architecture)的服務(wù)容器,該容器管理被稱為通用消息對象(Universal Message Objects /UMO)的服務(wù)對象,而這些對象都是POJO。所有UMO和其他應(yīng)用之間的通信都是通過消息端點(diǎn)(message endpoint)來進(jìn)行的。這些端點(diǎn)為眾多獨(dú)立的技術(shù),比如Jms, Smtp, Jdbc, Tcp, Http, Xmpp, file等等,提供了簡單和一致的接口。

          Mule應(yīng)用程序通常是通過網(wǎng)絡(luò)由許多Mule實(shí)例組成(實(shí)際上一個(gè)應(yīng)用里面只能有一個(gè)mule實(shí)例,因?yàn)閷?shí)例啟動(dòng)之后必須占用一個(gè)tcp端口),每一個(gè)實(shí)例是由具有一個(gè)或多個(gè)UMO組件的輕量級容器所構(gòu)成,每一個(gè)UMO組件都包含有一個(gè)或多個(gè)能收發(fā)事件的端點(diǎn)。
          以上描述可以用以下圖例來說明:

          實(shí)際上Mule是用一個(gè)配置文件來描述以上信息的,一個(gè)典型的配置文件如下:
          < mule-descriptor? name ="Error?Manager" ?implementation ="errorManager" >
          ????????????
          < inbound-router >
          ????????????????
          < endpoint? address ="file://./test-data/in"
          ??????????????????????????transformers
          ="XMLToExceptionBean?ExceptionBeanToErrorMessage" ? />
          ????????????
          </ inbound-router >

          ????????????
          < outbound-router >
          ????????????????
          < catch-all-strategy? className ="org.mule.routing.LoggingCatchAllStrategy" />

          ????????????????
          < router? className ="org.mule.routing.outbound.FilteringOutboundRouter"
          ????????????????????????transformer
          ="ErrorMessageToException" >

          ????????????????????
          < endpoint? address ="file://./test-data/exceptions"
          ??????????????????????????????transformers
          ="ErrorMessageToExceptionBean?ExceptionBeanToXML" >

          ????????????????????????
          < properties >< property? name ="outputPattern" ?value ="Exception-${UUID}.xml" ? /></ properties >
          ????????????????????
          </ endpoint >
          ????????????????????
          < filter? className ="org.mule.routing.filters.PayloadTypeFilter"
          ????????????????????????????expectedType
          ="org.mule.MuleException" ? />
          ????????????????
          </ router >

          ????????????????
          < router? className ="org.mule.routing.outbound.FilteringOutboundRouter"
          ????????????????????????transformer
          ="ErrorMessageToException" >

          ????????????????????
          < endpoint? address ="smtp://?address=${email.toAddress}"
          ??????????????????????????????transformers
          ="ErrorMessageToExceptionBean?ExceptionBeanToXML?StringToEmailMessage" >
          ????????????????????????
          < properties >
          ????????????????????????????
          < property? name ="fromAddress" ?value ="${email.fromAddress}" ? />
          ????????????????????????????
          < property? name ="subject" ?value ="${email.subject}" ? />
          ????????????????????????
          </ properties >
          ???????????????????????
          </ endpoint >

          ????????????????????
          < filter? className ="org.mule.routing.filters.PayloadTypeFilter"
          ????????????????????????????????????????expectedType
          ="org.mule.umo.lifecycle.FatalException" />
          ????????????????
          </ router >

          ????????????????
          < router? className ="org.mule.routing.outbound.FilteringOutboundRouter"
          ????????????????????????transformer
          ="ErrorMessageToException" >

          ????????????????????
          < endpoint? address ="jms://exception.queue"
          ??????????????????????????????transformers
          ="ErrorMessageToExceptionBean?ExceptionBeanToXML?ObjectToJMSMessage" />

          ????????????????????
          < filter? className ="org.mule.routing.filters.PayloadTypeFilter"
          ????????????????????????????expectedType
          ="org.mule.samples.errorhandler.exceptions.BusinessException" />
          ????????????????
          </ router >
          ????????????
          </ outbound-router >

          ????????????
          < interceptor? name ="default" />
          ????????
          </ mule-descriptor >

          ????????
          < mule-descriptor? name ="Business?Error?Manager" ?implementation ="businessErrorManager" >
          ????????????
          < inbound-router >
          ????????????????
          < endpoint? address ="jms://exception.queue"
          ??????????????????????????transformers
          ="JMSMessageToObject?XMLToExceptionBean?ExceptionBeanToErrorMessage" ? />
          ????????????
          </ inbound-router >
          ????????
          </ mule-descriptor >

          以上是摘取官方網(wǎng)站上提供的一個(gè)叫errorhandler的例子里配置文件的一部分,mule-descriptor節(jié)點(diǎn)是用來描述一個(gè)UMO組件的,在這個(gè)配置文件里提供了兩個(gè)UMO組件,在每一個(gè)UMO組件里有一個(gè)或多個(gè)端點(diǎn)(endpint)來接收或發(fā)送事件。也許你會(huì)覺得這個(gè)配置文件過于復(fù)雜,以至于無法理解。沒關(guān)系,在以后的文章里將會(huì)進(jìn)一步解釋。

          在Mule容器里面為UMO組件提供了一系列的服務(wù),例如事務(wù)管理,事件轉(zhuǎn)化,路由,事件審核和管理等,Mule將對象分開管理意味著可以將UMO組件交給當(dāng)前流行的IOC容器(比如spring)去構(gòu)造。雖然Mule聲稱與spring可以完美結(jié)合,然而在我通過一系列實(shí)驗(yàn)中發(fā)現(xiàn),Mule與spring結(jié)合還是有許多bug的,希望Mule能在下一個(gè)版本的更新中解決。

          有人可能會(huì)說,Mule只是一個(gè)Jms實(shí)現(xiàn),然而Mule不僅僅是一個(gè)Jms服務(wù)器,而且可以通過配置來使用幾乎所有的Jms服務(wù),比如說ActiveMq、JBoss MQ、Joram OpenJms、Oracle AQ、SeeBeyond、Spirit Wave、 UberMQ、Weblogic Jms?和 IBM WebSphere MQ。與Spring一樣,Mule不會(huì)重復(fù)造輪子,而是會(huì)使用在當(dāng)今開源社區(qū)里成熟的產(chǎn)品。比如在webservice上,Mule支持glue、axis和xfire。對于不同類型的連接(比如說jms和webservice),Mule提供了一致的服務(wù)來管理事件的流向、聯(lián)系、事務(wù)、安全和審核。

          在使用Mule之前,很有必要理解一些核心的概念和專業(yè)術(shù)語。以下圖表簡單的描述了一個(gè)Mule服務(wù)器的組成


          下面將對圖表上的每一個(gè)概念進(jìn)行解釋。

          The Mule Manager
          Mule管理器是Mule實(shí)例的中心,它的主要作用是管理Mule實(shí)例中各種各樣的對象,例如:連接器、端點(diǎn)、轉(zhuǎn)換器。這些對象被用來控制在組件中消息的流轉(zhuǎn)以及向組件管理的模型提供服務(wù)。

          The Model
          模型是在你組件中被管理和執(zhí)行的容器,它控制著消息在你組件里的收和發(fā)。默認(rèn)的Mule模型是基于SEDA的,這意味著它使用了一種高效的基于消息隊(duì)列的模型來達(dá)到最佳的性能。

          UMO Components
          UMO也就是Universal Message Object(通用消息對象),這是一種能從任何地方收發(fā)時(shí)間的對象。UMO對象可以是你的業(yè)務(wù)對象,在消息進(jìn)來的時(shí)候執(zhí)行你的業(yè)務(wù)邏輯,這是一種標(biāo)準(zhǔn)的JavaBean,沒有任何特殊的Mule代碼在你的組件(UMO對象)里面,Mule是如何在你的對象里進(jìn)行消息收發(fā)的路由和轉(zhuǎn)換取決于你在組件里的配置。

          Endpoints
          端點(diǎn)是Mule通信能力的基本原理。一個(gè)端點(diǎn)定義在兩個(gè)或者更多組件之間的通信渠道。可以通過配置消息過濾器、安全攔截器和事務(wù)處理來控制一個(gè)端點(diǎn)是如何將消息收與發(fā)的。

          External Applications
          外部應(yīng)用可以是任何的遺留系統(tǒng)。基本上,任何應(yīng)用只要有一種數(shù)據(jù)傳輸方式能通過Mule的端點(diǎn)進(jìn)行通信,UMO組件是不關(guān)心是哪個(gè)應(yīng)用提供的數(shù)據(jù)、應(yīng)用部署的地點(diǎn)以及是用何種傳輸協(xié)議的。

          posted @ 2006-11-21 10:12 finly 閱讀(2806) | 評論 (1)編輯 收藏

          主站蜘蛛池模板: 牙克石市| 洞头县| 外汇| 乌拉特后旗| 会昌县| 漳平市| 甘德县| 富阳市| 汉阴县| 扎兰屯市| 连南| 武城县| 射洪县| 洛宁县| 县级市| 蒙阴县| 安达市| 库车县| 南丹县| 通州市| 乌审旗| 涿州市| 和静县| 辉县市| 油尖旺区| 凤山县| 三河市| 佛冈县| 静海县| 新宁县| 东乡| 乌海市| 金华市| 衡南县| 民丰县| 南投县| 安吉县| 肥城市| 禹城市| 泗水县| 江西省|