|
電腦入門配置 如果平時只看看股票、上上網、看電影、玩玩普通的網絡游戲,這套配置完全可以勝任。 CPU: INTEL-G1610 ¥260 主板:技嘉B75M-D3V ¥460 內存:金士頓DDR3-1333 4G ¥280 硬盤:西部數據Caviar Blue 500GB ¥320 電源:安鈦克VP350P ¥200(備選海韻S12II330W ¥270) 機箱:酷冷毀滅者經典U3版 ¥200 顯示器:三年質保的大品牌19寸顯示器,16:9或16:10自行選擇
網游入門配置 大型3D網絡游戲入門配置,需要游戲關閉SSAO、低陰影、中等特效 CPU: INTEL-G2120 ¥410 主板:技嘉B75M-D3V ¥460 內存:金士頓DDR3-1600 4G ¥270 顯卡:微星7750-1G ¥620(備選迪蘭恒進7750恒金2代 ¥600) 硬盤:西部數據Caviar Blue 500GB ¥320 機箱:酷冷毀滅者經典U3版 ¥200 電源:安鈦克VP350 ¥200(備選海韻S12II330W ¥270) 顯示器:三年質保的大品牌19寸顯示器,16:9或16:10自行選擇
網游爽玩配置 基本可以爽玩目前的大型3D網絡游戲了,前提是不能雙開或多開 CPU: I5-3470 ¥1200(也可選擇I5-3470散片+九州風神玄冰400散熱) 主板:技嘉B75M-D3V ¥460(拉4倍頻備選華擎Z77-PRO4 ¥600) 內存:金士頓DDR3-1600 4GX2 ¥560 顯卡:華碩或微星7750-1G ¥620(N卡可考慮650) 硬盤:西部數據Caviar Blue 1TB ¥410 機箱:酷冷毀滅者經典U3版 ¥200 電源:海韻S12II430 ¥310(備選安鈦克ECO-400 ¥360) 顯示器:三年質保的大品牌22寸顯示器,16:9或16:10自行選擇
單機入門配置 CPU: I5-3470 ¥1200(也可選擇I5-3470散片+九州風神玄冰400散熱) 主板:技嘉Z77-DS3H ¥700(不超頻選擇技嘉B75M-D3H ¥500) 內存:金士頓DDR3-1600 4GX2 ¥560 顯卡:華碩或微星7770-1G ¥800(N卡可考慮技嘉650TI ¥1070) 硬盤:西部數據Caviar Blue 1TB ¥410 機箱:恩杰H230 ¥360 電源:海韻S12II430 ¥310(備選安鈦克ECO-400 ¥360) 顯示器:三年質保的大品牌22、23、24寸顯示器,16:9或16:10自行選擇
單機爽玩配置 CPU: I5-3570K 散熱:九州風神霜塔(備選采融B81) 主板:技嘉Z77X-D3H 內存:金士頓DDR3-1600 4GX2 顯卡:華碩或HIS 270X(N卡可考慮華碩760) 硬盤:西部數據Caviar Blue 1TB 機箱:恩杰H2 電源:海韻S12II430(備選安鈦克ECO-400需自購顯卡6PIN轉接線) 顯示器:三年質保的大品牌22、23、24寸顯示器,16:9或16:10自行選擇
高帥富配置 CPU: I5-3570K ¥1610 散熱:九州風神霜塔 ¥200(備選采融B81) 主板:技嘉Z77X-UD3H ¥1490 內存:芝奇RipjawsX DDR3-2133 4GX2 ¥570 顯卡:華碩或HIS 270X ¥1500(N卡可考慮華碩760 ¥2200) 硬盤:希捷2TB ¥580(SSD自行添加) 機箱:杰恩小幻影或H2 ¥480 電源:海韻S12II520 ¥440(備選安鈦克ECO520需自購顯卡6PIN轉接線 ¥460) 鼠標:Razer煉獄蝰蛇 ¥300(備選羅技G400 ¥230) 鍵盤:機械鍵盤自行研究 顯示器:Dell-2412M ¥1500
土豪級配置 CPU: I5-3570K ¥1610 散熱:九州風神霜塔 ¥200(備選采融B81) 主板:技嘉Z77X-UD3H ¥1490 內存:芝奇RipjawsX DDR3-2133 4GX2 ¥570 顯卡:技嘉GTX770 ¥3000(受挖坑影響,A卡中高端普遍無貨) 硬盤:希捷2TB ¥580(SSD自行添加) 機箱:銀欣FT02 ¥1700 電源:海韻X650 ¥800(備選安鈦克TPN550 ¥660) 鼠標:羅技G9X ¥600 鍵盤:機械鍵盤自行研究 顯示器:Dell-2412M ¥1500
CPU AMD 目前不給力,新裝機器建議直接上Intel的CPU。但Intel的4系列CPU(G3220、I3/I5/I7-4XXX)haswell發熱量還是比 較大,大家還是買3系列的CPU吧。CPU盒裝與散片的差別在于是否是正規質保,原盒是3年質保,而散片大多是店鋪質保1年。為什么選I5不選I7: 1. 在所有的大型網游里,建筑和NPC的建模、游戲AI運算、游戲內各種數據計算、游戲插件計算等等這些工作都需要CPU來做,顯卡只負責特效部分,但顯卡特 效是可以根據實際情況調整的。越是滿地NPC、各種建筑、密密麻麻的花花草草、各種飄數字的地方,CPU的壓力就越大,CPU的整體性能決定了大型網游里 高負荷場景下的最低幀數水平。 2.對CPU的要求無非就是:同頻率的CPU更依賴架構效率也就是核心效能;同架構效率下更依賴CPU主頻;大量AI運算需要大容量低延遲高命中率的共享緩存。 奔騰:雙核、高頻、無睿頻、3MB三級共享緩存; i5: 四核、高頻、有睿頻、6MB三級共享緩存。 對于大型網游,i5相比奔騰多出來的倆物理核心不是最重要的,更重要的是更高CPU主頻、睿頻以及容量翻倍的三級緩存,在高負荷場景下最低幀數表現會更好。 3.絕大多數的日常程序和游戲并不支持HT,也不能有效支持多核心。日常如果不使用能支持HT超線程軟件的話,也不需要選擇E3和I7。
主板 低端用B75M-D3V最佳,中端小超頻用二線做工一般的Z77即可,中高端用3570K搭配二線做工好的Z77,一線Z77高端直接上一線的Z77。 特別注意:Intel的4系列的CPU和4系列的主板(H81、B85、Z87)目前不支持XP系統,請純辦公或者還想用XP的注意下。
內存 不超頻就直接網上商城買金士頓,實體店千萬別買金士頓,現在假貨連金士頓自己都不能分辨,可選擇宇瞻或者金邦。
顯卡 N卡低端買650,700-1000買650TI,1000-1500買660,1500-2000買760,高端直接770。切記210、220……630、640等絕對是核顯都不如的垃圾,買顯卡直接650起。 A卡低端買600元左右買7750,中端買7770或260X,高端買R270X,土豪直接R280X。切記54XX、55XX、64XX、65XX等絕對是核顯都不如的垃圾,買顯卡直接R260X起。
硬盤 500G和1TB價差很小,最好直接上單碟1TB的,希捷、西數都看臉,隨便選吧。SSD只提升文件的讀取速度,對幀數基本沒影響,請大家自行研究
機箱 機箱是更新換代用得最久的,好的機箱對減少共振、散熱風道處理還是比較好的。
電源 如果有條件盡量不要用航嘉、長城之流的電源,首選臺系或臺系代工的電源。低端電源已被黑翔!(自行百度“紅星炸彈之歌”) 推薦安鈦克的VP350、ECO400、ECO520、TPN550和海韻的S12系列,注意VP450是坑爹貨,BP系列也不再做推薦了,因為和ECO400差價太少。
顯示器 為了大家的眼睛,請不要選擇20、21.5這幾個尺寸的顯示器,點距太小了!尺寸看個人喜好:想買16:9的就買23或者27的;想買16:10就買22或24的,再大尺寸就看個人喜歡了。但是一般顯示器尺寸越大,標準分辨率就越高,對機器的配置的需求也越高。
光驅 現在光驅對于大部分人來說基本沒什么用,如果要的話推薦先鋒DVR-221CHV,覺得沒必要用到刻錄的可以選擇先鋒232D,當然LG和建興的都可以。
鼠標 如果對實體店裝機送的不喜歡,個人推薦力勝L7(帶側鍵支持,小手用15、中手用55、大手用95)。往上建議直接蝰蛇和羅技,各有千秋。再往上就是G9X。
鍵盤 自行選擇,當然,土豪的話都會選擇機械鍵盤。
音箱 你是需要一個帶Mic的耳機還是一個外置音箱,好明顯這看個人需求,音箱的話個人推薦漫步者R101T06。至于其它的本人也不懂,就不要在這里獻丑了。
外設 各有所愛,希望大家去實體店體驗再決定購買,實體店價格坑爹的話試好手感走網上商城。
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1303_qiuxl_liberty/1303_qiuxl_liberty.html
介紹WebSphere Liberty Profile Server 介紹Liberty 是一款全新的輕量級應用服務器, 具有以下幾個方面的特點: - 高 模塊化——該功能允許用戶根據自己應用程序的需求啟用或者禁用相關的 feature(所謂 feature,在這里指的是運行應用程序所需要的各種資源的支持。比如,應用程序用到了 JSP,我們就需要啟動 JSP 這個 feature,如果不在需要此 feature,就可以將其禁用。通過這種模塊化的控制,我們可以按需啟動不同的 feature,包括 JSP, Servlet, JPA 等等,這種控制是實現輕量級應用服務器的基礎)。
- 輕量級—— Liberty 采用了多種技術進行瘦身和優化(主要是 OSGi 的應用),與傳統的 WAS 相比,極大的減少了運行時的內存消耗。
- 高動態性——由于采用了 OSGi 的架構,程序員在開發的時候,可以動態修改配置文件,應用程序以及服務器的運行時信息,這些修改都是實時生效的,不需要重啟服務器。
- 快速——由于采用了高模塊化的設計,Liberty 應用服務器會“按需啟動”,自身消耗的系統資源很少,對執行任務的反應時間也非常短,例如,一般來說 Liberty 的啟動時間小于 5 秒。
- 配置簡單——在整個開發過程中,用戶只需要和一個配置文件(server.xml)打交道,而且配置的使用也非常靈活。
WebSphere eXtreme Scale 介紹WebSphere eXtreme Scale 以內存網格的方式運行,動態處理、分區、復制和管理數以萬計服務器上的應用程序數據和業務邏輯。提供事務完整性和透明的故障恢復功能,從而確保高可用性、 高可靠性和一致的響應時間。它可以監控和管理自己,支持擴大和縮小,可以自動從故障恢復。極大的擴大了應用程序可以支持的用戶數量。用更少的時間服務更多 的用戶,或者在規定的、可接受的響應時間內為更多的用戶提供服務。 回頁首 前提- 安裝 Oracle 或者 IBM JDK,并配置好環境變量。
- 如果使用 Eclipse,請安裝 WebSphere Application Server V8.5 Liberty Profile Developer Tools
回頁首 安裝配置安裝 IBM HTTP 服務器及插件本文將使用 IBM 安裝管理器來在測試機 A 中安裝 IBM HTTP 服務器以及插件。 - 下載并安裝 IBM Installation Manager 1.5.2 或以上版本
- 下載添加安裝路徑到 IBM 安裝管理器
- 選中 IBM HTTP 服務器以及插件
圖 1. 安裝成功界面 安裝 LibertyLiberty 支持兩種安裝方式:運行 JAR 文件、使用安裝管理器安裝。本文將介紹如何使用運行 JAR 文件安裝 Liberty 服務器。在此例中,將會在測試機 A、B 和 C 上安裝 Liberty 服務器。 - 下載 wlp-developers-8.5.0.0.jar 文件到本地機器。
- 打開命令行,找到下載的 jar 文件,例如 C:\Liberty。
- 執行 java -jar wlp-developers-8.5.0.0.jar。
- 設定安裝路徑完成安裝。
圖 2. Liberty 安裝界面 安裝 WebSphere eXtreme ScaleWebSphere eXtreme Scale 支持兩種安裝方式:運行 JAR 文件、使用安裝管理器安裝。本文將介紹如何使用運行 JAR 文件安裝 WebSphere eXtreme Scale 插件。在此例中,將會在測試機 A 上安裝 WebSphere eXtreme Scale 插件。 - 下載 wxs-wlp_850.jar 文件到本地機器。
- 打開命令行,找到下載的 jar 文件,例如 C:\Liberty。
- 執行 java -jar wlp-developers-8.5.0.0.jar。
- 設定安裝路徑完成安裝。
圖 3. WebSphere eXtreme Scale 安裝界面 創建 Liberty 服務器- 進入 Liberty 安裝目錄下的 bin 文件夾
- 執行服務器創建命令 server create 服務器名稱(例如:Test001)
在本文中將會在測試機 A、B 和 C 上創建三個 Liberty 服務器實例,分別命名為 Test001,Test002 和 Test003. 圖 4. Liberty 服務器創建界面 在 wlp_home/usr/servers 目錄下看到以服務器命名的文件夾則表示創建成功。 圖 5. 服務器創建成功界面 配置 Liberty 服務器為每個 Liberty 服務器添加兩個新功能(在 Liberty 中運行嵌入式 XS 服務器,使用 XS 存儲 HTTP 會話)到 server.xml。添加代碼如下: 清單 1. Feature 添加示例 <!-- Enable features --> <featureManager> <feature>jsp-2.2</feature> <feature>localConnector-1.0</feature> <feature>eXtremeScale.web-1.0</feature> <feature>eXtremeScale.server-1.0</feature> </featureManager> 更改 server.xml 中 HTTP 默認端口,可以在 Test002 中使用 9080 端口,在 Test003 中使用 9081 端口。因為不同的服務器在不同的測試機上,此處我們使用默認端口 9080 不會產生沖突。添加代碼如下: 清單 2. HTTP 端口修改示例 <httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"> 添加 WXS 配置文件到 Liberty 服務器,并將 Test001 作為 Catalog 服務器。Test002 和 Test003 不需要作為 Catalog 服務器,所以 <xsServer> 標簽的 isCatalog 屬性設定為“false”。添加代碼如下: 清單 3. XS Server 配置示例 <!-- Configuration for XS Server --> <xsServer isCatalog="true" listenerPort="2809" serverName="Server1"/> <!-- Configuration for XS HTTP Session data storage --> <xsWebApp catalogHostPort="localhost:2809" objectGridType="REMOTE" replicationInterval="0" reuseSessionId="true" securityEnabled="true" sessionTableSize="0"/> 在 Test001 服務器目錄下創建“grids”文件夾,導入 XML 配置文件 deployment.xml 和 objectgrid.xml deployment.xml 文件代碼如下: 清單 4. deployment.xml 示例 <?xml version="1.0" encoding="UTF-8"?> <deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/objectgrid/ deploymentPolicy ../deploymentPolicy.xsd" xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy"> <objectgridDeployment objectgridName="session"> <mapSet name="sessionMapSet" numberOfPartitions="47" minSyncReplicas="0" maxSyncReplicas="0" maxAsyncReplicas="1" developmentMode="false" placementStrategy="FIXED_PARTITIONS"> <map ref="objectgridSessionMetadata"/> <map ref="objectgridSessionAttribute.*"/> <map ref="objectgridSessionTTL.*"/> </mapSet> </objectgridDeployment> </deploymentPolicy> 清單 5. objectgrid.xml 示例 <?xml version="1.0" encoding="UTF-8"?> <objectGridConfig xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://ibm.com/ws/ objectgrid/config ../objectGrid.xsd" xmlns="http://ibm.com/ws/objectgrid/config"> <objectGrids> <objectGrid name="session" txTimeout="30"> <bean id="ObjectGridEventListener" className="com.ibm.ws.xs. sessionmanager.SessionHandleManager"/> <backingMap name="objectgridSessionMetadata" pluginCollectionRef="objectgridSessionMetadata" readOnly="false" lockStrategy="PESSIMISTIC" ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3600" copyMode="COPY_TO_BYTES"/> <backingMap name="objectgridSessionAttribute.*" template="true" readOnly="false" lockStrategy="PESSIMISTIC" ttlEvictorType="NONE" copyMode="COPY_TO_BYTES"/> <backingMap name="objectgridSessionTTL.*" template="true" readOnly="false" lockStrategy="PESSIMISTIC" ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3600" copyMode="COPY_TO_BYTES"/> </objectGrid> </objectGrids> <backingMapPluginCollections> <backingMapPluginCollection id="objectgridSessionMetadata"> <bean id="MapEventListener" className="com.ibm.ws.xs.sessionmanager.MetadataMapListener"/> </backingMapPluginCollection> </backingMapPluginCollections> </objectGridConfig> 在三個 Liberty 服務器中添加 <httpSession> 標簽,使 Liberty 的會話管理器使用相同的會話 ID,添加代碼如下: 清單 6. httpSession 重用設定示例 <! — Configuration for httpSession resuse --> <httpSession idReuse="true"/> Test002 和 Test003 不需要配置 XS 服務器,將設定 isCatalog 為"false", 同時 Test002 和 Test003 不需要創建“grids”文件夾。 為方便起見,在此我們將 Test001、Test002 和 Test003 導入到 Eclipse(Indigo Service Release 2)。 圖 6. Liberty 服務器導入界面 創建部署測試程序新建 Web Project,命名為 testApp 在 WebContent 文件夾下創建 index.jsp 文件,文件代碼如下: 清單 7. Index.jsp 頁面代碼示例 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> 在 Liberty 集群中共享內存網格數據 </title> </head> <body> <h1> 在 Liberty 集群中共享內存網格數據測試頁面 !</h1> <% Integer count; Object obj_Count = session.getAttribute("COUNT"); if (obj_Count != null) { count = (Integer) obj_Count; count = count + 1; } else { count = 1; } session.setAttribute("COUNT", count); %> <h3> 計數器會在每次頁面加載時加 1</h3> <h3><font color="#FF0000"> 計數器 = <%=count%></font></h3> <h4><font color="#FF0000"><b> 頁面服務器 : <%= System.getProperty("wlp.server.name") %></b></font></h4> <br/> 頁面生成時間 = <%=new java.util.Date().toString()%><br/> <br/> </body> </html> 將 testApp 分別部署到 Test002 和 Test003, 圖 7. 測試程序部署界面 啟動 Test001 ,Test002 和 Test003 服務器 可 以使用命令行啟停 Liberty 服務器。例如在 Liberty 的安裝目錄的 bin 文件夾下執行 server start Test001 來啟動 Test001 服務器。將測試程序直接拷貝應用程序(例如 war 文件)到 dropins 目錄,當 Liberty 啟動的時候,就會自動掃描,然后啟動文件夾內的應用程序。前提是在啟動前要配置好 server.xml 中關于應用程序的相關信息,代碼如下: 清單 8. 應用程序部署示例 <application id="testApp" location="testApp.war" name="testApp" type="war"/> 配置 HTTP 服務器為 Test002 和 Test003 生成 plugin-cfg.xml 配置文件。在此使用 JAVA 的 jconsole 生成配置文件 在 JAVA 的安裝目錄的 bin 文件夾下運行 jconsole。 圖 8. Jconsole 啟動命令界面 圖 9. Jconsole 啟動界面 選擇之前創建的 Liberty 服務器,連接 在 MBeans 標簽下點擊 generateDefaultPluginConfig 方法生成配置文件 . 圖 10. 配置文件生成界面 合并 Test002 和 Test003 的 plugin-cfg.xml 配置文件。文件代碼如下,其中的 IP 分別為測試機 B 和 C 的 IP。 清單 9. plugin-cfg.xml 代碼示例 <?xml version="1.0" encoding="UTF-8"?> <!-- This config file was generated by plugin's merge tool v1.0.0.2 on 2012.10.16 at 16:03:42 CST --> <Config ASDisableNagle="false" AcceptAllContent="false" AppServerPortPreference="HostHeader" ChunkedResponse="false" FIPSEnable="false" IISDisableNagle="false" IISPluginPriority="High" IgnoreDNSFailures="false" RefreshInterval="60" ResponseChunkSize="64" SSLConsolidate="false" SSLPKCSDriver="REPLACE" SSLPKCSPassword="REPLACE" TrustedProxyEnable="false" VHostMatchingCompat="false"> <Log LogLevel="Error" Name=".\logs\defaultServer\http_plugin.log"/> <Property Name="ESIEnable" Value="true"/> <Property Name="ESIMaxCacheSize" Value="1024"/> <Property Name="ESIInvalidationMonitor" Value="false"/> <Property Name="ESIEnableToPassCookies" Value="false"/> <Property Name="PluginInstallRoot" Value="."/> <!-- Server Clusters --> <ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="Shared_2_Cluster_0" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60"> <Server CloneID="Server3CloneID" ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="Server3" ServerIOTimeout="900" WaitForContinue="false"> <Transport Hostname="9.115.75.85" Port="9081" Protocol="http"/> </Server> <Server CloneID="Server2CloneID" ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="Server2" ServerIOTimeout="900" WaitForContinue="false"> <Transport Hostname="9.111.97.74" Port="9081" Protocol="http"/> </Server> <PrimaryServers> <Server Name="Server3"/> <Server Name="Server2"/> </PrimaryServers> </ServerCluster> <!-- Virtual Host Groups --> <VirtualHostGroup Name="/cell/sharedCell_2/vHostGroup/shared_host_0"> <VirtualHost Name="*:443"/> <VirtualHost Name="*:80"/> <VirtualHost Name="*:9080"/> <VirtualHost Name="*:9081"/> </VirtualHostGroup> <!-- URI Groups --> <UriGroup Name="/cell/sharedCell_2/application/ default_host_defaultServer_default_node_Cluster_URIs"> <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/test/*"/> </UriGroup> <!-- Routes --> <Route ServerCluster="Shared_2_Cluster_0" UriGroup="/cell/sharedCell_2/application/ default_host_defaultServer_default_node_Cluster_URIs" VirtualHostGroup="/cell/sharedCell_2/vHostGroup/shared_host_0"/> </Config> 將合并后的 plugin-cfg.xml 配置文件拷貝到 IBM HTTP 服務器上。 下邊所示代碼到 http.conf 文件使 plugin-cfg.xml 配置文件生效 清單 10. plugin-cfg.xml 生效示例 LoadModule was_ap22_module "path\to\mod_was_ap22_http.dll" WebSpherePluginConfig "path\to\plugin-cfg.xml" 回頁首 測試訪問測試程序啟動 HTTP 服務器以及 Test001、Test002 和 Test003。在測試機 A 上打開瀏覽器,訪問 http://localhost/testApp/ 可以看到 Test002 訪問界面或者 Test003 訪問界面。這依賴于 HTTP 服務器將請求發送到 Test002 還是 Test003。 圖 11. Test002 訪問界面 圖 12. Test003 訪問界面 以第一次訪問 Test002 為例,此時如果 Test002 發生故障停機了(在此手動停掉 Test002),當再次訪問 http://localhost/testApp/ 時,HTTP 服務器會將請求發送到 Test003,如圖 13 所示。但此時計數器并沒有還原,由于兩個服務器共享內存網格數據,所以計數器在首次訪問 Test003 的時候已經在 Test002 的基礎上加了一。 圖 13. Test003 計數器增加界面 參考資料
這篇文章主要是參考了http://blog.csdn.net/jiangkai_nju/article/details/7338177這個博客,要看詳細的內容可以參考這個博客進行學習研究,但是我覺得在以下的一些基本可以滿足我們的文件傳輸要求了。 scp是linux中功能最強大的文件傳輸命令,可以實現從本地到遠程以及遠程到本地的輕松文件傳輸操作。下面簡單的講解一些關于scp命令的操作,給有用的人一些參考: 首先是本地到遠程的操作:操作的格式如下 scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file 第1,2個指定了用戶名,命令執行后需要再輸入密碼,第1個僅指定了遠程的目錄,文件名字不變,第2個指定了文件名; 第3,4個沒有指定用戶名,命令執行后需要輸入用戶名和密碼,第3個僅指定了遠程的目錄,文件名字不變,第4個指定了文件名; * 例子: scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3 scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3 * 復制目錄: * 命令格式: scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder 第1個指定了用戶名,命令執行后需要再輸入密碼; 第2個沒有指定用戶名,命令執行后需要輸入用戶名和密碼; * 例子: scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/ scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 上面 命令 將 本地 music 目錄 復制 到 遠程 others 目錄下,即復制后有 遠程 有 ../others/music 2、是實現從遠程到本地的文件傳輸操作: 從 遠程 復制到 本地,只要將 從 本地 復制到 遠程 的命令 的 后2個參數 調換順序 即可; 例如: scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3 scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/ 最簡單的應用如下 : scp 本地用戶名 @IP 地址 : 文件名 1 遠程用戶名 @IP 地址 : 文件名 2 [ 本地用戶名 @IP 地址 :] 可以不輸入 , 可能需要輸入遠程用戶名所對應的密碼 . 可能有用的幾個參數 : -v 和大多數 linux 命令中的 -v 意思一樣 , 用來顯示進度 . 可以用來查看連接 , 認證 , 或是配置錯誤 . -C 使能壓縮選項 . -P 選擇端口 . 注意 -p 已經被 rcp 使用 . -4 強行使用 IPV4 地址 . -6 強行使用 IPV6 地址 . Linux scp命令的使用方法應該可以滿足大家對Linux文件和目錄的復制使用了。
websphere liberty 安裝 部署 websphere application server liberty 部署 下載地址 http://www.ibm.com/developerworks/cn/downloads/ws/wasdevelopers/ 1.IBM WebSphere Application Server Liberty for Developers was.repo.8550.liberty.developers.ilan.zip (112M) 2.Installation Manager 1.6.2 for Windows 64-bit ---看實際情況下載 agent.installer.win32.win32.x86_64_1.6.2000.20130301_2248.zip (135M) 完成下載后,先安裝 IBM Installation Manager,安裝后讓重啟 IBM Installation Manager,點擊“存儲庫”選擇 was.repo.8550.liberty.developers.ilan.zip解壓后的文件repository.config 然后就開始安裝了... 安裝好后。 啟動websphere liberty : C:\Users\xxx>"C:\Program Files\IBM\WebSphere\Liberty\bin\server.bat" start 正在啟動服務器 defaultServer。 服務器 defaultServer 已啟動。 App部署和卸載 myserver目錄即C:\Program Files\IBM\WebSphere\Liberty\usr\servers\defaultServer\ 部署和卸載行為可以在兩個地方發生,一個是server.xml配置文件中,另一個是dropins目錄. (1) 在myserver目錄下找到server.xml文件并打開,加入”<application id="hello-app" location="hello-app.war" name="hello-app" type="war"/>”即可完成部署,刪除這句話即可完成卸載,即便myserver處于運行狀態也可以這樣操作,因為server.xml是 可以即時更新的,所做的修改能夠馬上生效。相對于tomcat這是Liberty profile的一個優勢,當tomcat的server.xml內容被修改修改時必須重啟才能生效。這種部署方式適用于開發階段。 (2) 直接將war包扔進myserver目錄下的dropins文件夾中即可完成部署,刪除此war包機完成卸載,這種部署適用于實施階段。 (3)訪問App 在瀏覽器中鍵入http://localhost:9080/hello-app/index.jsp,頁面顯示hello world,說明App部署成功,運行正常。 參考: http://blog.csdn.net/qiaoyupeng/article/details/7226303
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1207_zhuxl_liberty/1207_zhuxl_liberty.html 2012 年 6 月 15 日,IBM 正式發布了 WebSphere Application Server V8.5 版本(簡稱 WAS V8.5)。WebSphere Liberty Profile Server(簡稱 Liberty)是 WAS V8.5 中最主要的新特性,它是一個基于 OSGi 內核,高模塊化,高動態性的輕量級 WebSphere 應用服務器,其安裝極為簡單(解壓即可)、啟動非常快、占用很少的磁盤和內存空間,支持 Web、mobile 和 OSGi 應用的開發,旨在提高開發人員的生產效率。 在本文中,我們將詳細介紹什么是 Liberty 以及如何使用 Liberty 快速的開發和部署應用,使讀者迅速的掌握這一全新的輕量級應用服務器。 0 評論: 朱 修磊, 軟件工程師, IBM 2012 年 7 月 19 日 內容
什么是 WebSphere Liberty Profile Server ?Liberty 是一款全新的輕量級應用服務器,它將用戶的良好開發體驗作為最主要的出發點。其主要特點和內容包括: - 高 模塊化——該功能允許用戶根據自己應用程序的需求啟用或者禁用相關的 feature(所謂 feature,在這里指的是運行應用程序所需要的各種資源的支持。比如,應用程序用到了 JSP,我們就需要啟動 JSP 這個 feature,如果不在需要此 feature,就可以將其禁用。通過這種模塊化的控制,我們可以按需啟動不同的 feature,包括 JSP, Servlet, JPA 等等,這種控制是實現輕量級應用服務器的基礎)。
- 輕量級—— Liberty 采用了多種技術進行瘦身和優化(主要是 OSGi 的應用),與傳統的 WAS 相比,極大的減少了運行時的內存消耗。
- 高動態性——由于采用了 OSGi 的架構,程序員在開發的時候,可以動態修改配置文件,應用程序以及服務器的運行時信息,這些修改都是實時生效的,不需要重啟服務器。
- 快速——由于采用了高模塊化的設計,Liberty 應用服務器會“按需啟動”,自身消耗的系統資源很少,對執行任務的反應時間也非常短,例如,一般來說 Liberty 的啟動時間小于 5 秒。
- 配置簡單——在整個開發過程中,用戶只需要和一個配置文件(server.xml)打交道,而且配置的使用也非常靈活。
盡 管 Liberty 與傳統 WAS 相比只是一個“小塊頭”,但是在 Web 和 OSGi 應用程序的開發上,Liberty 與傳統 WAS 完全保持一致,在 Liberty 上開發的程序,可以直接移植到傳統 WAS 上,不需要做任何的改變。相比傳統 WAS 的龐大,Liberty 在為用戶提供良好的開發體驗上遙遙領先。 作為應用服務器,Liberty 支持與多種開發工具的結合: - 支持在 Rational Application Developer 中使用 Liberty,推薦在企業級應用開發中使用這種方式,因為這種方式支持最大范圍的編程模型以及 Cloud。
- 支 持在 Eclipse 3.6(Helios) 或者 3.7(Indigo) 中使用 Liberty, 需要從 Eclipse Marketplace 安裝 WebSphere Application Server V8.5 Developer Tools for Eclipse 或者 WebSphere Application Server V8.5 Liberty Profile Developer Tools for Eclipse。在 Eclipse 中使用 Liberty 是完全免費的,當然,如果你需要得到 IBM 工程師的支持,則需要支付額外的費用。
同時,Liberty 服務器也支持多種主流的操作系統平臺,包括 Windows、Linux、Unix、z/OS 以及 Mac OS 等。Liberty 既可以用在開發環境中,也可以用于產品環境(Mac OS 除外)。Liberty 同時支持 Oracle 和 IBM JDK,支持的最低版本分別是:Oracle Java™ 6 update 26 和 IBM Java 6.0 (J9 2.6) SR 1。 回頁首 初探 WebSphere Liberty Profile Server快速安裝在 本文中我們主要介紹 Eclipse 與 Liberty 的結合使用,在開始搭建 Liberty 的開發環境前,讀者需要自行下載和安裝 Oracle 或者 IBM JDK,并配置好環境變量,這是 Liberty 能正常運行的必要條件。如果是以開發為目的,那么使用 Liberty 以及 Liberty 工具是完全免費的,并且沒有時間限制。 在線安裝 Liberty 開發工具 打開 Eclipse,依次點擊 Help > Eclipse MarketPlace,在出現的頁面搜索欄里輸入 websphere,并點擊搜索。 圖 1. 安裝 Liberty 開發工具 在 搜索結果中會看到如上紅色方框標注的工具,其中 WebSphere Application Server V8.5 Liberty Profile Developer Tools 是 WebSphere Application Server V8.5 Developer Tools 的子集,對于搭建 Liberty 開發環境,直接安裝前者就可以,如果讀者還需要將 Eclipse 與傳統的 WAS 結合使用,那么就需要安裝后一個工具。在本文中,我們直接安裝 WebSphere Application Server V8.5 Liberty Profile Developer Tools。在安裝過程結束后,需要重啟 Eclipse。待 Eclipse 重啟后,選擇 Servers 視圖,右擊新建一個服務器,出現如下圖所示,則表明 Liberty 開發工具已經成功安裝 圖 2. 驗證 Liberty 開發工具安裝成功 創建 Liberty 服務器 在安裝好 Liberty 開發工具后,我們需要在 Eclipse 中創建 Liberty 服務器,接著圖 2 所示,選擇 WebSphere Application Server V8.5 Liberty Profile,點擊 Next 圖 3. 選擇 Liberty 的安裝位置 在 上圖中,我們需要指定 Liberty 服務器的安裝位置,對于如何下載 Liberty 服務器,有兩種選擇:1. 訪問 wasdev.net 站點,下載 Liberty 的安裝文件,Liberty 安裝文件只有不到 50M,下載成功后只需要解壓該文件到磁盤的任何一個位置即可完成 Liberty 的安裝,“解壓即安裝”,安裝 Liberty 就是如此簡單。然后,點擊 Browser 選擇 Liberty 的安裝位置,即可繼續創建 Liberty 服務器;2. 直擊點擊上圖的 Download or install,安裝提示進行操作,只需要幾分鐘就可以在線下載并安裝一個全新的 Liberty 服務器。在這里我們需要指出的是,您也可以選擇直接使用 Liberty 服務器,而不是將其與 Eclipse 搭配起來使用,直接解壓下載的 Liberty 到任意目錄,就可以使用了。點擊 Next,因為 Liberty 默認是沒有創建服務器的,所以可以得到下圖 圖 4. 空白的 Liberty 服務器 點擊 New,創建你的第一個 Liberty 服務器 圖 5. 創建 Liberty 服務器 為你的 Liberty 任意指定一個名字,點擊 Finish 完成創建。在 Servers 視圖中,我們將看到創建好的 DemoServer。 圖 6. Liberty 服務器概覽 從上圖中我們可以看到 DemoServer 是停止狀態,右鍵 DemoServer,選擇 Start 啟動 Liberty 服務器,在 Console 視圖中檢查 log,可以看到 Liberty 已經正常啟動。 清單 1. Liberty 啟動日志 Launching DemoServer (wlp-1.0.0.20120428-1251/websphere-kernel_1.0.0) on Java HotSpot(TM) Client VM, version 1.7.0_01-b08 (en_US) [AUDIT ] CWWKE0001I: The server DemoServer has been launched. [AUDIT ] CWWKZ0058I: Monitoring dropins for applications. [AUDIT ] CWWKF0011I: The server DemoServer is ready to run a smarter planet. 在上圖中,雙擊 Server Configuration,可以看到如下配置文件(server.xml)。 清單 2. 初始的 server.xml 文件 <server description="new server"> <!-- Enable features --> <featureManager> <feature>jsp-2.2</feature> </featureManager> <httpEndpoint id="defaultHttpEndpoint" host="localhost" httpPort="9080" httpsPort="9443" /> </server> 這個 server.xml 就是 Liberty 服務器中唯一的配置文件,我們在開發過程中對應用程序或者 Liberty 運行時的配置都是在這個文件中完成。在默認情況下,Liberty 已經啟用了 JSP 功能,我們可以動態的根據應用的需求為 Liberty 增加各種功能支持,方法如下: 在 server.xml 編輯窗口下方,選擇 Design 模式, 圖 7. 圖形化編輯配置文件 選擇左側 Feature Manager,然后選擇右側 Add,出現下圖列表,根據需要添加相應的功能支持。 圖 8. Features 列表 當 然,讀者也可以直接手工編輯 server.xml,手動添加需要的 Feature,但是要注意遵循 Liberty 配置文件的編寫規范。到此,我們已經成功的安裝了 Liberty 服務器,并搭建好了 Liberty 服務器的開發環境。開始我們的例子程序之前,下文首先向讀者更深層次的介紹 Liberty 的功能特性。 簡化服務器配置在 Liberty 中,和用戶打交道的只有一個配置文件 server.xml。關于應用程序或者服務器運行時的所有配置都是在這一個文件中完成的,簡化了服務器的配置,也減輕了程序員的負擔。我們可以在 Eclipse 中直接編輯該文件,修改內容會實時生效。這個配置文件是可以被導出,也可以被不同的服務器共享。 靈活的服務器配置圖 9. 靈活配置 對 于配置文件的使用是非常靈活的,例如:如果有很多個 Liberty 都需要用到同一個配置文件,那么可以將該文件單獨導出,存放在一個共享的位置,單個的 Liberty 服務器可以利用 <incluse /> 屬性導入共享的配置文件;又比如配置文件的內容非常多而且繁雜,我們就可以將其中的內容分別寫在不同的配置文件中(稱為不同的配置文件片段),同樣利用 <include /> 將這些片段文件導入到主配置文件中,運行時會負責去實時的解析這些片段文件。 應用部署在 Liberty 中部署應用也是非常簡單的事情,打開你的 Liberty 安裝目錄 <Liberty_Install_dir>\usr\servers\server_name ,可以看到如下目錄結構 : 圖 10. 應用部署目錄 在 上圖中 apps 和 dropins 是兩個存放安裝的應用的文件夾,我們可以通過 Eclipse 部署應用到 Liberty,應用文件將被放在 apps 下面(這個是應用部署的默認目錄,也可以通過配置,將應用文件部署到其他任何位置)。我們也可以直接拷貝應用程序(例如 war 文件)到 dropins 目錄,當 Liberty 啟動的時候,就會自動掃描上面的兩個文件夾,然后啟動文件夾內的應用程序。當然,啟動應用前,要確保已經配置好 server.xml 里的相關信息。 動態加載模塊圖 11. 動態化加載 與 傳統 WAS 不同的是,Liberty 并不是一個靜態的服務器,它是動態的,可以根據應用程序的需要動態加載相應的模塊。這些模塊是以“feature”來定義的,比如 JSP, Servlet 等,都是不同的 feature。可以將 feature 看作是一個獨立的模塊,它由一到多個 OSGi bundle 組成,共同來完成某一個特定的任務。這些 feature 可是隨時被添加和移除,而不需要重啟服務器,正是得益于這樣的動態化設計,Liberty 無論在啟動時間還是反應時間上都更勝一籌,為程序員帶來了快速的開發體驗。 運行時動態更新圖 12. 動態更新 Liberty 為我們提供了一個可以動態實時更新的運行時,無論你是修改了應用程序,還是修改配置文件都會實時的被 Liberty 檢測到,并立即更新運行時到最新狀態,無需重啟 Liberty 服務器。新的 feature 可以被隨時的添加到 server.xml 中,運行時為負責實時啟動相應的功能模塊,這一切都與程序員來說都是透明的。例如:我們首先啟動 Liberty 服務器,然后將一個 JSP 應用放到 dropins 目錄里,如果你沒有在 server.xml 中啟動 JSP 功能,那么該應用就不會被啟動。你將會得到一個警告信息,提示你應該首先啟用 JSP 功能,然后該應用才會被實時的啟動。同樣,如果你將 JSP 功能從 server.xml 中移除,該應用也會被立刻停止。 新型的軟件部署方式圖 13. 集中管理 Liberty 服務器 當 我們使用 Liberty 開發完應用程序后,Liberty 為我們提供了一個全新的軟件部署方式,我們可以將 Liberty 服務器和應用程序一起打包為 ZIP 文件,然后將這個 ZIP 傳輸到需要部署軟件的服務器上直接解壓即可。為了支持適合云端和大規模應用的部署,WebSpere(傳統 WAS)還提供了集中管理部署的功能(需要安裝 WAS ND 版本),使用該功能可以將我們事先打好的 ZIP 包遠程的傳輸到多個服務器上,在傳送完成后,WAS 還會負責解壓和安裝。另外,WAS 的集中管理功能還提供了遠程啟動、停止和卸載 Liberty 服務器的功能。 Liberty 之于開發人員對于開發人員來說,Liberty 的出現是一個十分振奮人心的消息。首先,Liberty 作為一個輕量級的應用服務器,和 Eclipse 可以完美的結合,其最重要的特性就是關注程序員的開發體驗,包括快速的下載、安裝和環境搭建,在開發過程中,實時的應用更新而無需重啟服務器,這些都會極 大的提高程序員的開發效率;其次,在開發,測試和部署應用的過程中,Liberty 都極其友好和方便,其與傳統 WAS 的完全兼容,也為應用程序的遷移提供了有力的保障。 回頁首 與主流 WEB 容器的對比從某種程度上來講,目前,Liberty 與 Tomcat 處在同一個產品層次上,我們從功能特性、使用體驗以及標準支持上對這兩個服務器進行了對比,從中,我們可以看出 Liberty 在輕量級服務器中所具有的獨特優勢: 表 1. Liberty VS Tomcat對比項 | Tomcat | Liberty |
---|
大小 | <30M | <50M | 啟動速度 | <5s | <5s | Java EE 標準支持 | JSP 2.2, Servlet 3.0, JSTL 1.2 用戶需要添加相關的 jar 包來實現對其它標準的支持 | JSP 2.2, Servlet 3.0, JSF 2.0, JSTL 1.2, JPA 2.0, JDBC 4.0, JAX-RS 1.0, JNDI 1.0, Bean Validation 1.0, SSL 1.0, Security 1.0, Web Security 1.0, JMX 1.0 可動態加載或卸載對應的 feature | OSGi 編程模型 | 否 | 是,支持 Blue Print 1.0, WAB 1.0 | 開發工具 | 支持 Eclipse | 支持 eclipse, IBM Rational Application Developer | 支持的操作系統 | Linux, Windows | Linux, Windows, AIX, Mac, HP-UX, Solaris, iSeries, zSeries | 性能 | 一般 | 與傳統 WAS 具有相同的核心代碼,性能好 | 應用程序熱部署 | 支持 | 支持 | 配置文件 | 多個配置文件,更新后需重啟服務器 | 一個配置文件,更新后及時生效,無需重啟 | 可移植性 | 您可以利用 IBM Application Migration Toolkit 將 Tomcat 上開發的應用快速移植到 WebSphere 應用服務器。反之,則不然。 | Liberty 和傳統 WAS 對編程模型和標準的支持一致。在 Liberty 上開發的應用可以直接運行在傳統 WAS 之上 | 文檔 | 官方文檔涵蓋內容有限,但網絡上相關內容(包括:blog,技術文章等)廣泛。 | http://wasdev.net 上提供下載地址、文檔、視頻、音頻、樣本引用等。還有 WAS 的信息中心也有大量文檔可供參考閱讀。 | 社區 | http://tomcat.apache.org 有 dev 和 user mailing list,沒有官方支持,有時回復不夠及時。 | http://wasdev.net,可以與開發人員直接交流 | 長期戰略優勢 | 一般用于開發環境,生產環產能用的比較少。支持的并發度不高,可擴展性不強。 | Liberty 與傳統 WAS 共享同一代碼,天生具有其高效穩定的特點。開發 - 測試 - 生產切換零代價。可擴展性高,支持多個 server 間的負載均衡和故障恢復。 |
回頁首 Demo:使用 Eclipse 和 Liberty 開發 Web 應用通 過上面的介紹,相信大家對 Liberty 已經有了一個大概的認識,接下來我們通過一個 Demo 來向大家展示如何使用 Liberty 和 Eclipse 開發 Web 應用。開始 Demo 之前,請大家根據上文的介紹,搭建自己的 Liberty 開發環境,并安裝好 JDK 并且配置好環境變量。 Demo 程序很簡單,包含一個 Servlet,實現打印當前時間的功能。步驟如下: - 打開 Eclipse,選擇 File > New > Web>Dynamic Web Project
- 設置如下屬性值:
- Project name: Demo
- Target runtime: WebSphere Application Server V8.5 Liberty Profile
圖 14. 創建動態 Web 工程 - 點擊 Next 兩次,然后點擊 Finish,完成工程的創建。
此時,你可以在左側的資源導航頁面看到剛剛創建完成的 Demo 工程,展開工程就可以看到一些默認創建的資源。 - 右擊 Src 目錄,選擇 New > Class
- 設置如下屬性值:
- Package: com.date.demo
- Name: DateProvider
圖 15. 創建 java 文件 - 點擊 Finish
- 編輯如下代碼到 DateProvider.java
清單 3. DateProvider.java package com.date.demo; import java.util.Date; public class DateProvider { public String getDate() { // TODO Auto-generated method stub return new Date().toString(); } } 該文件只包含一個方法,getDate() 用來獲得當前時間。 - 右擊 Src,選擇 New > Servlet
- 設置如下屬性值
- Java package: com.date.demo
- Class name: DatePrintServlet
圖 16. 創建 Servlet 文件 - 點擊 Finish,完成創建。
- 編輯如下內容到 DatePrintServlet.java
清單 4. DatePrintServlet.java package com.date.demo; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class DatePrintServlet */ @WebServlet("/DatePrintServlet") public class DatePrintServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DatePrintServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub DateProvider dateProvider=new DateProvider(); response.getWriter().println(dateProvider.getDate()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } - 在左側導航欄選擇 DatePrintServlet,點擊右鍵 Run As > Run on Server , 如下圖:
圖 17. 選擇 Liberty 服務器 - 點擊 Finish,Liberty 開發工具將會為我們部署上面的 Demo 程序,并啟動 Liberty 服務器。從 console 的日志里我們可以看到如下描述:
[AUDIT ] CWWKZ0001I: Application Demo started in 1.235 seconds. 表明 Demo 應用已經成功部署了,同時,在 Eclipse 自帶的瀏覽器里可以看到如下頁面信息: 圖 18. Demo 運行頁面 讓我們回過頭來看看 server.xml 里面的內容: 清單 5. server.xml <server description="new server"> <!-- Enable features --> <featureManager> <feature>jsp-2.2</feature> <feature>localConnector-1.0</feature> </featureManager> <httpEndpoint host="localhost" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> <applicationMonitor updateTrigger="mbean"/> <application id="Demo" location="Demo.war" name="Demo" type="war"/> </server> 其中: <feature /> 包含了應用程序中所用到的功能包,如果你啟用了 jsp-2.2,那么 Liberty 默認支持對 Servlet 3.0。 <httpEndpoint /> 指定了 HTTP 訪問的端口,我們可以在這里改變默認的端口。 <applicationMonitor /> 用來配置對應用程序的監控模式,updateTrigger 屬性是用來控制動態更新的,通過 Liberty 工具部署應用時 updateTrigger 的值設置為 mbean,當我們直接把應用程序拖進 dropins 時,需要將 updateTrigger 設為 polled,當然,如果我們不需要應用的動態更新功能,可以將這個值設為 disabled. <application /> 用來指定和應用本身相關的屬性,id 和 name 是應用的唯一標識,type 指定了應用的類型,location 指定應用所在的位置,默認是在 apps 目錄里面,我們可以通過配置修改這個默認設置。 回頁首 總結通 過上面的介紹,相信讀者已經對 WAS V8.5 最重要的特性 Liberty 有了一個全面的認識,作為新一代輕量級應用服務器,Liberty 采用了和傳統 WAS 相同的代碼,繼承了傳統 WAS 的優點,無論在性能上還是在穩定性上都優越于其他同類產品。Liberty 無論是在開發環境中還是在產品環境中,都具有其他產品不可比擬的優勢。我們有理由相信,在追求開發效率和軟件質量的今天,每一個程序員都會很快的接受這個 WAS 家族的“小塊頭”。 參考資料 學習獲得產品和技術討論
IBM邀請我們公司試用websphere application server v8.5 liberty profile,因此經理讓我下載下來安裝,測試一下,正好我正對這個新東西也挺感興趣的,所以在此把過程記錄下來. 一、簡介 Liberty profile是WAS V8.5的一個新特性,它代表WAS服務器上的App正常運行必須的一組運行時環境集合,這個環境是可以動態配置的。簡單說Liberty profile就是WAS8.5的精簡版,具有占用空間少、啟動速度快、調試方便、完全支持JavaEE、App無縫移植到WAS8.5等特性,特別適合 開發測試階段使用。 二、安裝,部署 1.前提: 確保計算機上正確安裝了JDK1.6或以上版本,Eclipse3.7或以上版本(可選)。 2.安裝Liberty profile 將下載得到的Zip包was4d-20111202-0614.zip,解 壓到磁盤任意目錄下,無誤后安裝完畢。可以參照根目錄下的readme.txt文件,掌握Liberty profile的基本配置管理。在這里假設Liberty profile的安裝目錄為<install.dir>。 3.創建server實例 Liberty profile繼承了WAS的profile特性,即運行時環境可以以實例的形式單獨動態配置,實例之間互不影響。因此,進入cmd模式下 cd bin ,然后was4d.bat create myserver,這樣就創建了一個名稱為myserver的運行時環境實例,其磁盤路徑為<install.dir>\usr \servers\myserver,我們開發的App可以部署到myserver目錄下的dropins文件夾中運行,供外界訪問。 4.安裝Liberty profile Eclipse開發插件 在Eclipse Marketplace中鍵入websphere,在隨后的結果列表中找到websphere application server v8.5 liberty profile beta一項,點擊install安裝,完畢后重啟Eclipse。 5.在Eclipse中引用myserver實例 在Eclipse 中的Server視圖中右擊 New-Server,在彈出框中選擇IBM- websphere application server v8.5 liberty profile beta,然后根據提示選擇myserver實例即可,無誤完畢后會在Server視圖中出現websphere application server v8.5 liberty profile beta at localhost 一項,右擊websphere application server v8.5 liberty profile beta at localhost選擇start,此時Console視圖會出現myserver啟動日志,“The feature update is complete after …”表示啟動成功。 6.開發App 在Eclipse中新建一個簡單的Java Web App 命名為hello-app,在其index.jsp頁面中輸入hello world即可。 7.App部署和卸載 部署和卸載行為可以在兩個地方發生,一個是server.xml配置文件中,另一個是dropins目錄. (1) 在 myserver目錄下找到server.xml文件并打開,加入”<application id="hello-app" location="hello-app.war" name="hello-app" type="war"/>”即可完成部署,刪除這句話即可完成卸載,即便myserver處于運行狀態也可以這樣操作,因為server.xml是 可以即時更新的,所做的修改能夠馬上生效。相對于tomcat這是Liberty profile的一個優勢,當tomcat的server.xml內容被修改修改時必須重啟才能生效。這種部署方式適用于開發階段。 (2) 直接將war包扔進myserver目錄下的dropins文件夾中即可完成部署,刪除此war包機完成卸載,這種部署適用于實施階段。 8.訪問App 在瀏覽器中鍵入http://localhost:9080/hello-app/index.jsp,頁面顯示hello world,說明App部署成功,運行正常。 三、Liberty,Tomcat6,was比較 Tomcat 和was的比較很簡單,一個開源一個商用,開源的Tomcat小巧,靈活適合做開發測試,商用的was它提供了一個平臺,你可以基于各種增值功能、使用 Process Server、MQ等等更先進而穩定的架構來構建應用.對于并發,高性能訪問的處理能力會更強. 由于Liberty profile 是 was 的簡易版本,所以Liberty profile只適合開發相對比較簡單的App,而這個App可以無縫移植到WAS上. Tomcat6 與 Liberty profile的比較,紅色為各自的優勢 Tomcat6 Liberty profile 占用空間 27MB 56MB 啟動時間 996ms 1600ms 配置復雜度 較復雜,配置文件較多 很簡單,可以無配置文件 Server.xml 即時更新 不支持,需重啟生效支持,即時生效 運行環境 多實例 不支持,靈活性較差支持,靈活性較高 Java EE 規范支持 不支持serverlet3.0支持serverlet3.0 支持jpa2.0 支持jpa2.0 不支持EJB 不支持EJB 四、總結 之前開發WAS應用時,如果這個App不依賴于容器,我們通常的做法是在Tomcat中開發測試,在WAS中部署運行,而部署時App的配置文件必定要做相應的修改,比如JNDI。 現在不用了,我們有了Liberty profile----WAS的一組運行時環境,它與Tomcat一樣免費,輕巧,快速,靈活,而且開發的應用不做任何修改就能移植到WAS上。 相對于與Tomcat6,Liberty profile支持最新的JavaEE規范,增加了很多功能更加強大,使用非常方便的特性,所以Liberty profile比Tomcat更優秀,即便App不是基于WAS也可以使用Liberty profile進行開發測試。
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1207_zhuxl_liberty/1207_zhuxl_liberty.html 2012 年 6 月 15 日,IBM 正式發布了 WebSphere Application Server V8.5 版本(簡稱 WAS V8.5)。WebSphere Liberty Profile Server(簡稱 Liberty)是 WAS V8.5 中最主要的新特性,它是一個基于 OSGi 內核,高模塊化,高動態性的輕量級 WebSphere 應用服務器,其安裝極為簡單(解壓即可)、啟動非常快、占用很少的磁盤和內存空間,支持 Web、mobile 和 OSGi 應用的開發,旨在提高開發人員的生產效率。 在本文中,我們將詳細介紹什么是 Liberty 以及如何使用 Liberty 快速的開發和部署應用,使讀者迅速的掌握這一全新的輕量級應用服務器。 0 評論: 朱 修磊, 軟件工程師, IBM 2012 年 7 月 19 日 內容
什么是 WebSphere Liberty Profile Server ?Liberty 是一款全新的輕量級應用服務器,它將用戶的良好開發體驗作為最主要的出發點。其主要特點和內容包括: - 高 模塊化——該功能允許用戶根據自己應用程序的需求啟用或者禁用相關的 feature(所謂 feature,在這里指的是運行應用程序所需要的各種資源的支持。比如,應用程序用到了 JSP,我們就需要啟動 JSP 這個 feature,如果不在需要此 feature,就可以將其禁用。通過這種模塊化的控制,我們可以按需啟動不同的 feature,包括 JSP, Servlet, JPA 等等,這種控制是實現輕量級應用服務器的基礎)。
- 輕量級—— Liberty 采用了多種技術進行瘦身和優化(主要是 OSGi 的應用),與傳統的 WAS 相比,極大的減少了運行時的內存消耗。
- 高動態性——由于采用了 OSGi 的架構,程序員在開發的時候,可以動態修改配置文件,應用程序以及服務器的運行時信息,這些修改都是實時生效的,不需要重啟服務器。
- 快速——由于采用了高模塊化的設計,Liberty 應用服務器會“按需啟動”,自身消耗的系統資源很少,對執行任務的反應時間也非常短,例如,一般來說 Liberty 的啟動時間小于 5 秒。
- 配置簡單——在整個開發過程中,用戶只需要和一個配置文件(server.xml)打交道,而且配置的使用也非常靈活。
盡 管 Liberty 與傳統 WAS 相比只是一個“小塊頭”,但是在 Web 和 OSGi 應用程序的開發上,Liberty 與傳統 WAS 完全保持一致,在 Liberty 上開發的程序,可以直接移植到傳統 WAS 上,不需要做任何的改變。相比傳統 WAS 的龐大,Liberty 在為用戶提供良好的開發體驗上遙遙領先。 作為應用服務器,Liberty 支持與多種開發工具的結合: - 支持在 Rational Application Developer 中使用 Liberty,推薦在企業級應用開發中使用這種方式,因為這種方式支持最大范圍的編程模型以及 Cloud。
- 支 持在 Eclipse 3.6(Helios) 或者 3.7(Indigo) 中使用 Liberty, 需要從 Eclipse Marketplace 安裝 WebSphere Application Server V8.5 Developer Tools for Eclipse 或者 WebSphere Application Server V8.5 Liberty Profile Developer Tools for Eclipse。在 Eclipse 中使用 Liberty 是完全免費的,當然,如果你需要得到 IBM 工程師的支持,則需要支付額外的費用。
同時,Liberty 服務器也支持多種主流的操作系統平臺,包括 Windows、Linux、Unix、z/OS 以及 Mac OS 等。Liberty 既可以用在開發環境中,也可以用于產品環境(Mac OS 除外)。Liberty 同時支持 Oracle 和 IBM JDK,支持的最低版本分別是:Oracle Java™ 6 update 26 和 IBM Java 6.0 (J9 2.6) SR 1。 回頁首 初探 WebSphere Liberty Profile Server快速安裝在 本文中我們主要介紹 Eclipse 與 Liberty 的結合使用,在開始搭建 Liberty 的開發環境前,讀者需要自行下載和安裝 Oracle 或者 IBM JDK,并配置好環境變量,這是 Liberty 能正常運行的必要條件。如果是以開發為目的,那么使用 Liberty 以及 Liberty 工具是完全免費的,并且沒有時間限制。 在線安裝 Liberty 開發工具 打開 Eclipse,依次點擊 Help > Eclipse MarketPlace,在出現的頁面搜索欄里輸入 websphere,并點擊搜索。 圖 1. 安裝 Liberty 開發工具 在 搜索結果中會看到如上紅色方框標注的工具,其中 WebSphere Application Server V8.5 Liberty Profile Developer Tools 是 WebSphere Application Server V8.5 Developer Tools 的子集,對于搭建 Liberty 開發環境,直接安裝前者就可以,如果讀者還需要將 Eclipse 與傳統的 WAS 結合使用,那么就需要安裝后一個工具。在本文中,我們直接安裝 WebSphere Application Server V8.5 Liberty Profile Developer Tools。在安裝過程結束后,需要重啟 Eclipse。待 Eclipse 重啟后,選擇 Servers 視圖,右擊新建一個服務器,出現如下圖所示,則表明 Liberty 開發工具已經成功安裝 圖 2. 驗證 Liberty 開發工具安裝成功 創建 Liberty 服務器 在安裝好 Liberty 開發工具后,我們需要在 Eclipse 中創建 Liberty 服務器,接著圖 2 所示,選擇 WebSphere Application Server V8.5 Liberty Profile,點擊 Next 圖 3. 選擇 Liberty 的安裝位置 在 上圖中,我們需要指定 Liberty 服務器的安裝位置,對于如何下載 Liberty 服務器,有兩種選擇:1. 訪問 wasdev.net 站點,下載 Liberty 的安裝文件,Liberty 安裝文件只有不到 50M,下載成功后只需要解壓該文件到磁盤的任何一個位置即可完成 Liberty 的安裝,“解壓即安裝”,安裝 Liberty 就是如此簡單。然后,點擊 Browser 選擇 Liberty 的安裝位置,即可繼續創建 Liberty 服務器;2. 直擊點擊上圖的 Download or install,安裝提示進行操作,只需要幾分鐘就可以在線下載并安裝一個全新的 Liberty 服務器。在這里我們需要指出的是,您也可以選擇直接使用 Liberty 服務器,而不是將其與 Eclipse 搭配起來使用,直接解壓下載的 Liberty 到任意目錄,就可以使用了。點擊 Next,因為 Liberty 默認是沒有創建服務器的,所以可以得到下圖 圖 4. 空白的 Liberty 服務器 點擊 New,創建你的第一個 Liberty 服務器 圖 5. 創建 Liberty 服務器 為你的 Liberty 任意指定一個名字,點擊 Finish 完成創建。在 Servers 視圖中,我們將看到創建好的 DemoServer。 圖 6. Liberty 服務器概覽 從上圖中我們可以看到 DemoServer 是停止狀態,右鍵 DemoServer,選擇 Start 啟動 Liberty 服務器,在 Console 視圖中檢查 log,可以看到 Liberty 已經正常啟動。 清單 1. Liberty 啟動日志 Launching DemoServer (wlp-1.0.0.20120428-1251/websphere-kernel_1.0.0) on Java HotSpot(TM) Client VM, version 1.7.0_01-b08 (en_US) [AUDIT ] CWWKE0001I: The server DemoServer has been launched. [AUDIT ] CWWKZ0058I: Monitoring dropins for applications. [AUDIT ] CWWKF0011I: The server DemoServer is ready to run a smarter planet. 在上圖中,雙擊 Server Configuration,可以看到如下配置文件(server.xml)。 清單 2. 初始的 server.xml 文件 <server description="new server"> <!-- Enable features --> <featureManager> <feature>jsp-2.2</feature> </featureManager> <httpEndpoint id="defaultHttpEndpoint" host="localhost" httpPort="9080" httpsPort="9443" /> </server> 這個 server.xml 就是 Liberty 服務器中唯一的配置文件,我們在開發過程中對應用程序或者 Liberty 運行時的配置都是在這個文件中完成。在默認情況下,Liberty 已經啟用了 JSP 功能,我們可以動態的根據應用的需求為 Liberty 增加各種功能支持,方法如下: 在 server.xml 編輯窗口下方,選擇 Design 模式, 圖 7. 圖形化編輯配置文件 選擇左側 Feature Manager,然后選擇右側 Add,出現下圖列表,根據需要添加相應的功能支持。 圖 8. Features 列表 當 然,讀者也可以直接手工編輯 server.xml,手動添加需要的 Feature,但是要注意遵循 Liberty 配置文件的編寫規范。到此,我們已經成功的安裝了 Liberty 服務器,并搭建好了 Liberty 服務器的開發環境。開始我們的例子程序之前,下文首先向讀者更深層次的介紹 Liberty 的功能特性。 簡化服務器配置在 Liberty 中,和用戶打交道的只有一個配置文件 server.xml。關于應用程序或者服務器運行時的所有配置都是在這一個文件中完成的,簡化了服務器的配置,也減輕了程序員的負擔。我們可以在 Eclipse 中直接編輯該文件,修改內容會實時生效。這個配置文件是可以被導出,也可以被不同的服務器共享。 靈活的服務器配置圖 9. 靈活配置 對 于配置文件的使用是非常靈活的,例如:如果有很多個 Liberty 都需要用到同一個配置文件,那么可以將該文件單獨導出,存放在一個共享的位置,單個的 Liberty 服務器可以利用 <incluse /> 屬性導入共享的配置文件;又比如配置文件的內容非常多而且繁雜,我們就可以將其中的內容分別寫在不同的配置文件中(稱為不同的配置文件片段),同樣利用 <include /> 將這些片段文件導入到主配置文件中,運行時會負責去實時的解析這些片段文件。 應用部署在 Liberty 中部署應用也是非常簡單的事情,打開你的 Liberty 安裝目錄 <Liberty_Install_dir>\usr\servers\server_name ,可以看到如下目錄結構 : 圖 10. 應用部署目錄 在 上圖中 apps 和 dropins 是兩個存放安裝的應用的文件夾,我們可以通過 Eclipse 部署應用到 Liberty,應用文件將被放在 apps 下面(這個是應用部署的默認目錄,也可以通過配置,將應用文件部署到其他任何位置)。我們也可以直接拷貝應用程序(例如 war 文件)到 dropins 目錄,當 Liberty 啟動的時候,就會自動掃描上面的兩個文件夾,然后啟動文件夾內的應用程序。當然,啟動應用前,要確保已經配置好 server.xml 里的相關信息。 動態加載模塊圖 11. 動態化加載 與 傳統 WAS 不同的是,Liberty 并不是一個靜態的服務器,它是動態的,可以根據應用程序的需要動態加載相應的模塊。這些模塊是以“feature”來定義的,比如 JSP, Servlet 等,都是不同的 feature。可以將 feature 看作是一個獨立的模塊,它由一到多個 OSGi bundle 組成,共同來完成某一個特定的任務。這些 feature 可是隨時被添加和移除,而不需要重啟服務器,正是得益于這樣的動態化設計,Liberty 無論在啟動時間還是反應時間上都更勝一籌,為程序員帶來了快速的開發體驗。 運行時動態更新圖 12. 動態更新 Liberty 為我們提供了一個可以動態實時更新的運行時,無論你是修改了應用程序,還是修改配置文件都會實時的被 Liberty 檢測到,并立即更新運行時到最新狀態,無需重啟 Liberty 服務器。新的 feature 可以被隨時的添加到 server.xml 中,運行時為負責實時啟動相應的功能模塊,這一切都與程序員來說都是透明的。例如:我們首先啟動 Liberty 服務器,然后將一個 JSP 應用放到 dropins 目錄里,如果你沒有在 server.xml 中啟動 JSP 功能,那么該應用就不會被啟動。你將會得到一個警告信息,提示你應該首先啟用 JSP 功能,然后該應用才會被實時的啟動。同樣,如果你將 JSP 功能從 server.xml 中移除,該應用也會被立刻停止。 新型的軟件部署方式圖 13. 集中管理 Liberty 服務器 當 我們使用 Liberty 開發完應用程序后,Liberty 為我們提供了一個全新的軟件部署方式,我們可以將 Liberty 服務器和應用程序一起打包為 ZIP 文件,然后將這個 ZIP 傳輸到需要部署軟件的服務器上直接解壓即可。為了支持適合云端和大規模應用的部署,WebSpere(傳統 WAS)還提供了集中管理部署的功能(需要安裝 WAS ND 版本),使用該功能可以將我們事先打好的 ZIP 包遠程的傳輸到多個服務器上,在傳送完成后,WAS 還會負責解壓和安裝。另外,WAS 的集中管理功能還提供了遠程啟動、停止和卸載 Liberty 服務器的功能。 Liberty 之于開發人員對于開發人員來說,Liberty 的出現是一個十分振奮人心的消息。首先,Liberty 作為一個輕量級的應用服務器,和 Eclipse 可以完美的結合,其最重要的特性就是關注程序員的開發體驗,包括快速的下載、安裝和環境搭建,在開發過程中,實時的應用更新而無需重啟服務器,這些都會極 大的提高程序員的開發效率;其次,在開發,測試和部署應用的過程中,Liberty 都極其友好和方便,其與傳統 WAS 的完全兼容,也為應用程序的遷移提供了有力的保障。 回頁首 與主流 WEB 容器的對比從某種程度上來講,目前,Liberty 與 Tomcat 處在同一個產品層次上,我們從功能特性、使用體驗以及標準支持上對這兩個服務器進行了對比,從中,我們可以看出 Liberty 在輕量級服務器中所具有的獨特優勢: 表 1. Liberty VS Tomcat對比項 | Tomcat | Liberty |
---|
大小 | <30M | <50M | 啟動速度 | <5s | <5s | Java EE 標準支持 | JSP 2.2, Servlet 3.0, JSTL 1.2 用戶需要添加相關的 jar 包來實現對其它標準的支持 | JSP 2.2, Servlet 3.0, JSF 2.0, JSTL 1.2, JPA 2.0, JDBC 4.0, JAX-RS 1.0, JNDI 1.0, Bean Validation 1.0, SSL 1.0, Security 1.0, Web Security 1.0, JMX 1.0 可動態加載或卸載對應的 feature | OSGi 編程模型 | 否 | 是,支持 Blue Print 1.0, WAB 1.0 | 開發工具 | 支持 Eclipse | 支持 eclipse, IBM Rational Application Developer | 支持的操作系統 | Linux, Windows | Linux, Windows, AIX, Mac, HP-UX, Solaris, iSeries, zSeries | 性能 | 一般 | 與傳統 WAS 具有相同的核心代碼,性能好 | 應用程序熱部署 | 支持 | 支持 | 配置文件 | 多個配置文件,更新后需重啟服務器 | 一個配置文件,更新后及時生效,無需重啟 | 可移植性 | 您可以利用 IBM Application Migration Toolkit 將 Tomcat 上開發的應用快速移植到 WebSphere 應用服務器。反之,則不然。 | Liberty 和傳統 WAS 對編程模型和標準的支持一致。在 Liberty 上開發的應用可以直接運行在傳統 WAS 之上 | 文檔 | 官方文檔涵蓋內容有限,但網絡上相關內容(包括:blog,技術文章等)廣泛。 | http://wasdev.net 上提供下載地址、文檔、視頻、音頻、樣本引用等。還有 WAS 的信息中心也有大量文檔可供參考閱讀。 | 社區 | http://tomcat.apache.org 有 dev 和 user mailing list,沒有官方支持,有時回復不夠及時。 | http://wasdev.net,可以與開發人員直接交流 | 長期戰略優勢 | 一般用于開發環境,生產環產能用的比較少。支持的并發度不高,可擴展性不強。 | Liberty 與傳統 WAS 共享同一代碼,天生具有其高效穩定的特點。開發 - 測試 - 生產切換零代價。可擴展性高,支持多個 server 間的負載均衡和故障恢復。 |
回頁首 Demo:使用 Eclipse 和 Liberty 開發 Web 應用通 過上面的介紹,相信大家對 Liberty 已經有了一個大概的認識,接下來我們通過一個 Demo 來向大家展示如何使用 Liberty 和 Eclipse 開發 Web 應用。開始 Demo 之前,請大家根據上文的介紹,搭建自己的 Liberty 開發環境,并安裝好 JDK 并且配置好環境變量。 Demo 程序很簡單,包含一個 Servlet,實現打印當前時間的功能。步驟如下: - 打開 Eclipse,選擇 File > New > Web>Dynamic Web Project
- 設置如下屬性值:
- Project name: Demo
- Target runtime: WebSphere Application Server V8.5 Liberty Profile
圖 14. 創建動態 Web 工程 - 點擊 Next 兩次,然后點擊 Finish,完成工程的創建。
此時,你可以在左側的資源導航頁面看到剛剛創建完成的 Demo 工程,展開工程就可以看到一些默認創建的資源。 - 右擊 Src 目錄,選擇 New > Class
- 設置如下屬性值:
- Package: com.date.demo
- Name: DateProvider
圖 15. 創建 java 文件 - 點擊 Finish
- 編輯如下代碼到 DateProvider.java
清單 3. DateProvider.java package com.date.demo; import java.util.Date; public class DateProvider { public String getDate() { // TODO Auto-generated method stub return new Date().toString(); } } 該文件只包含一個方法,getDate() 用來獲得當前時間。 - 右擊 Src,選擇 New > Servlet
- 設置如下屬性值
- Java package: com.date.demo
- Class name: DatePrintServlet
圖 16. 創建 Servlet 文件 - 點擊 Finish,完成創建。
- 編輯如下內容到 DatePrintServlet.java
清單 4. DatePrintServlet.java package com.date.demo; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class DatePrintServlet */ @WebServlet("/DatePrintServlet") public class DatePrintServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DatePrintServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub DateProvider dateProvider=new DateProvider(); response.getWriter().println(dateProvider.getDate()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } - 在左側導航欄選擇 DatePrintServlet,點擊右鍵 Run As > Run on Server , 如下圖:
圖 17. 選擇 Liberty 服務器 - 點擊 Finish,Liberty 開發工具將會為我們部署上面的 Demo 程序,并啟動 Liberty 服務器。從 console 的日志里我們可以看到如下描述:
[AUDIT ] CWWKZ0001I: Application Demo started in 1.235 seconds. 表明 Demo 應用已經成功部署了,同時,在 Eclipse 自帶的瀏覽器里可以看到如下頁面信息: 圖 18. Demo 運行頁面 讓我們回過頭來看看 server.xml 里面的內容: 清單 5. server.xml <server description="new server"> <!-- Enable features --> <featureManager> <feature>jsp-2.2</feature> <feature>localConnector-1.0</feature> </featureManager> <httpEndpoint host="localhost" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> <applicationMonitor updateTrigger="mbean"/> <application id="Demo" location="Demo.war" name="Demo" type="war"/> </server> 其中: <feature /> 包含了應用程序中所用到的功能包,如果你啟用了 jsp-2.2,那么 Liberty 默認支持對 Servlet 3.0。 <httpEndpoint /> 指定了 HTTP 訪問的端口,我們可以在這里改變默認的端口。 <applicationMonitor /> 用來配置對應用程序的監控模式,updateTrigger 屬性是用來控制動態更新的,通過 Liberty 工具部署應用時 updateTrigger 的值設置為 mbean,當我們直接把應用程序拖進 dropins 時,需要將 updateTrigger 設為 polled,當然,如果我們不需要應用的動態更新功能,可以將這個值設為 disabled. <application /> 用來指定和應用本身相關的屬性,id 和 name 是應用的唯一標識,type 指定了應用的類型,location 指定應用所在的位置,默認是在 apps 目錄里面,我們可以通過配置修改這個默認設置。 回頁首 總結通 過上面的介紹,相信讀者已經對 WAS V8.5 最重要的特性 Liberty 有了一個全面的認識,作為新一代輕量級應用服務器,Liberty 采用了和傳統 WAS 相同的代碼,繼承了傳統 WAS 的優點,無論在性能上還是在穩定性上都優越于其他同類產品。Liberty 無論是在開發環境中還是在產品環境中,都具有其他產品不可比擬的優勢。我們有理由相信,在追求開發效率和軟件質量的今天,每一個程序員都會很快的接受這個 WAS 家族的“小塊頭”。 參考資料 學習獲得產品和技術
每逢春運,鐵路系統唯一的官方購票網站12306就會成為眾矢之的,今年也不例外。今年12306并未出現大面積 崩潰問題,但這并不妨礙它再次被淹沒在一片埋怨聲中。1月5日,有網友在問答網站“知乎”上提問,如果把12306外包給IBM或者阿里巴巴來做的話,能 不能比現在做得好?我們來看看獲得5千余名網友“點贊”的知乎用戶王強的解答吧。
官方訂票網站12306崩潰時的頁面(資料圖) 以下是王強的回復(有刪節):
12306首秀被罵的狗血噴頭后鐵道部找來IBM、阿里巴巴等大企業要解決方案,給出的條件是資金管夠但是問題得解決。幾大企業最后都拒絕了。 12306 開始自己嘗試解決問題。他們發現市面上可以買到的成套解決方案都不足以應付春運購票負載,所以只能自己改進已有的數據庫以前12306用的是小型機,發現 性能嚴重不足,遂改用x86系統+linux平臺(原平臺為HP Superdome小型機,UNIX系統,Sybase ASE數據庫)。最后他們的核心系統用了十幾個節點(現在應該是17節點)的多路Xeon E7(具體幾路待考),每個節點配1TB內存,數據庫全部在內存中運行。2013年春運,12306系統峰值負載11萬tps,與2012年淘寶雙11活 動峰值負載相當,新的系統基本經受住了考驗。
補充:以上內容是我在2013年7月得知的信息,彼時沒有任何公開來源提到過12306新系 統的技術細節。甚至,當時局外人沒人知道12306已經在2012年開始做了技術改造。直到數日之前,鐵總首次向媒體公開了技術改造的詳情:分布式集群內 存數據技術引領12306技術革命。這篇文章給出的細節,與我之前看到的內容完全一致。由此我可以確信信息來源是此次技術升級的核心人士。
另 外,關于第三方合作對方給出的信息是IBM、Oracle、Sybase全部不能滿足要求,主要是這些廠商的方案部署以后,要升級時不能做到不停機靈活擴 展。也就是說,IBM沒有做到是他們技術不足“搞不定”。阿里巴巴參與了改造,負責了排隊系統。此外,雖然后端經受住了壓力,前端卻如大家所看到的那樣還 是頻頻卡死。到底卡死的原因是前端水平太低還是訪問壓力太大,暫時沒有可靠的信息供判斷。
淘寶的問題是其系統架構是分散度較高的,各個訂 單之間關聯度不大;而12306每出一張票都要對全線路做數據更新(因為一條線路存在多個站點),因此系統負載相較淘寶來說集中很多,直接搬淘寶的方案也 無法解決問題。淘寶的應用類型決定了阿里巴巴可以通過部署大量的服務器來分散壓力,但12306就不行。其實他們的核心系統的硬件成本不過數百萬,不是他 們不想采購更多服務器,而是買更多的服務器也沒什么用途。最后,在經過軟件層面的優化之后,12306的瓶頸其實是核心節點的CPU、內存性能。但是這個 性能的提升不是朝夕的事情,而是受限于摩爾定律,基本上每兩年才能翻一倍多些。(這段話是我自己的分析,不過現在12306的后端數據庫系統應付現有需求 已經夠用了) 補充:關于座位實時復用,我看到的信息明確表明12306出票時,每出一張區間票都要實時調整該線路其他受影響區間段的余票數量,且這是很大的壓力來源;另外,對方表示所使用的GemFire數據庫與簡單的memcache/redis數據緩沖不同,有著本質區別。
然后我說點對鐵路系統購票困難現象的看法: 一種商品只要出現供不應求現象,那么結果只有兩種:大家排隊購買;出現黑市,變相提高商品的流通價格并抑制需求。 12306 這個事情,就是標準的限價商品供不應求之后出現排隊與黑市現象的例子。因為供不應求,所以有了黃牛、搶票軟件與秒殺。如果供應充足,一個車次直到發車前都 有一兩張余票,那么黃牛、搶票就毫無存在價值,旅客也用不著守在電腦前和其他人比拼手速和網速以及電腦性能網絡性能了。 現在供應不足的前提 下,12306就算把系統做的性能再高,也只是會加快熱門車次票務秒殺的速度而已——而這更會刺激搶票軟件,大家為了在更短的時間里成功搶到隊列名額就會 不斷提升自己的搶票性能。打個比方說就是一個店門前排隊,消費者為了增加買到商品的概率去雇人代排,每個消費者都雇了好多人,造成店門口的通道擁擠不堪。 為了減緩擁堵,商家不斷拓寬通道,但每次一拓寬消費者們就會增加雇傭的排隊勞力把新增的通道空間占滿,形成惡性循環。這樣下去,只要還存在供不應求的現 象,這種循環就不會有終止的時候。也就是說,12306的問題主要不是出在網站本身。
12306這個事情,網上有多少網友從一開始就獻計 獻策了,也有不少網友提供了很不錯的建議。但不得不說,很多網友在提建議時完全就是一種居高臨下、自以為是的態度,上來就先認定需求簡單可以輕松應付,隨 便有點經驗的工程師就能搞定,12306出問題全怪體制太爛,國企效率低下,一幫人光拿錢不做事,技術水平太低……
淘寶2013年雙11 活動,峰值流量是一秒鐘完成1.3萬筆訂單。12306在2014年1月6日全天網絡出票400萬張。看起來雙11流量完爆12306是吧?等等!別忘了 12306這400萬張票可不是全天悠悠閑閑平均地賣出去的,而是分成10個時段集中被搶走的。每個時段開始放票后數分鐘之內大部分票就已經被搶光了。以 每個時段40萬票,峰值持續三分鐘估算,高峰期一分鐘出票在10萬張以上毫不夸張。誠然,一分鐘10萬訂單還比不上淘寶2013雙11,但別忘了一年以前 阿里巴巴也只是達到了一分鐘15萬訂單的水平而已(并且在高峰期一樣卡爆)。而且一分鐘10萬出票還滿足不了需求的,以旅客購票的熱情來看,達到一分鐘 50萬票都不一定能讓所有旅客滿意。
淘寶在2012年雙11時已經是業界頂尖水平了,其軟硬件技術皆為自主研發,既便如此面對一分鐘十幾 萬的訂單量都會卡死。請問,覺得12306“需求簡單,問題可以輕松解決”的,是不是水平已經高到了阿里巴巴都要請你們去領導整個技術團隊的級別呢?是不 是你們的方案可以輕松應付每分鐘數十萬筆訂單,達到全球一流水平了?
淘寶面臨的需求是業界從未有過的,所以淘寶的路很艱難。12306面 臨的需求是其他人遇到過的么?全世界哪個國家、哪種客運票務系統敢說自己的負載達到12306三分之一的水平?面對空前龐大的壓力,諸位“技術高手”只是 憑著自己一點程序員的經驗,在電腦前一個人思考上一會兒就給出個“簡單、實用、省錢、輕松應付”的解決方案——你們知不知道“自大”這兩個字怎么寫啊?
還 有一些人,看說IBM沒做就一口認定是12306故意排擠IBM,認定IBM解決這問題肯定沒壓力。好嘛,IBM什么時候做過如此規模的票務系統了?你細 節什么都不知就預設結論了?為啥淘寶當年沒選擇IBM作為方案提供商而是自主研發?IBM的大數據業務主要集中在金融領域,這不代表它在其他領域就樣樣精 通好不好?它能拿出的方案無非是Power7小型機平臺,Power7在數據庫性能上又比Xeon E7強多點?然后Power7系統賣多少錢了解么?后續維護難度多大了解么?把適合銀行金融行業的平臺放到12306來真的合適么?說起來,不就是因為 “12306”和“IBM”這倆名字放一起,諸位內心里首先就給前者打了負分對后者仰視么?要是把“12306”換成“nasdaq”,那結論就又是一回 事兒了——哦正好nasdaq沒用IBM方案,可見nasdaq是排擠IBM內部人賺黑心錢是吧?不過2013年工商銀行系統升級故障,應該是和方案提供 商IBM無關的,肯定是國企的體制問題無誤!
最后呢?12306還是做到了全球最強的客運票務系統。一貫被認為是因循守舊的國企,在選擇 技術方案時放棄沿用多年的小型機/UNIX平臺去擁抱業界還是新鮮事物的基于x86/linux的大規模分布內存數據庫系統,承受住了堪比2012年淘寶 雙11的壓力。在這個領域,12306可以自豪地說自己是做的最好的案例。它還在卡,還是偶爾崩潰,頁面還是難看,可是這些遲早會改進。這個過程中也還是 會有冷嘲熱諷,還是會有所謂的大牛指點江山,但最終解決春運高峰期一天數百萬張秒殺售票的,還是12306自己。所以,走自己的路,讓別人去說吧。
原文鏈接:12306 外包給阿里巴巴、IBM 等大企業做是否可行
WebSphere Application Server V8.5 的最重要的新特性是新的 Liberty Profile 以及智能管理。本 FAQ 為您匯集了關于 WAS V8.5 的問題集錦,從智能管理、 Liberty Profile、性能等方面幫助您解答您使用過程中可能遇到的問題。 Liberty 和 tWAS是兩個產品嗎?目前 tWAS和 Liberty 所支持的功能有什么不同?Liberty 作為 WAS V8.5 發布的一部分,和 tWAS 作為兩個單獨的介質供用戶使用。在功能上 Liberty 是 tWAS 的一個子集。tWAS 是一個完整的 J2EE 服務器,支持 J2EE 規范,而 liberty 目前只支持 Web, OSGi 和 Mobile 應用的開發。 Liberty 是如何提供給用戶的?是以插件的形式嗎?Liberty 是以一個單獨的運行時環境提供給用戶的。用戶下載 Liberty 的安裝介質后解壓縮即可作為運行時環境部署應用。同時 Liberty 可以很好的跟開發工具如 Eclipse、RAD 等結合使用,有很好的開發者體驗。 Liberty 有哪些優點?- 簡單安裝(可以通過 IM 進行安裝,或者直接下載免安裝版本)
- 快速啟動
- 靈活的配置(只需要在 server.xml 文件里面進行配置即可)
- 實時更新(采用 OSGi 架構,server 不需重啟,更改即可生效)
- 動態加載,Liberty 對所支持的功能特性實施動態加載的機制,即當使用某些特性的時候才將該特性相關的類加載的運行時當中。
Liberty 是否支持文件夾形式的 bundle 應用?Liberty 目前不支持文件夾形式的 bundle 應用,但是支持將 EBA 格式的 OSGi 應用解壓安裝,應用名稱的格式應為 xxx.eba。 Liberty 采用動態加載的方式,那么當新添加特性時,Liberty 服務器是否會重啟?當添加新的功能特性時,功能特性動態生效,Liberty 服務器不會被自動重啟。 在 Liberty 上開發的應用能直接遷移到 tWAS 上進行使用嗎?需要做什么修改嗎?用 Liberty 開發的應用可以無縫地遷移到 tWAS 上面,不需要對應用進行修改,只需要在 tWAS 對數據源等應用所需要的資源做相應的設置即可。 Liberty 上部署應用有兩種方式,即 Monitored Directory 和 Configuration,兩種方式有什么不同?通過 Monitored Directory 的方式,用戶只需把應用放在特定目錄下面,Liberty 會自動去檢查到該應用,然后自動幫助用戶進行安裝。 而通過 Configuration 的方式,Liberty 不會自動去進行安裝,用戶需要手動去進行安裝,比如通過命令行或者 Eclipse 開發平臺。 相比較與 Tomcat,開發者選擇 Liberty 的原因將會是什么? Liberty 會帶來哪些新體驗 ?內容對比項 | Tomcat | Liberty |
---|
Java EE 標準支持 | JSP 2.2, Servlet 3.0, JSTL 1.2 用戶需要添加相關的 jar 包來實現對其它標準的支持 | JSP 2.2, Servlet 3.0, JSF 2.0, JSTL 1.2, JPA 2.0, JDBC 4.0, JAX-RS 1.0, JNDI 1.0, Bean Validation 1.0, SSL 1.0, Security 1.0, Web Security 1.0, JMX 1.0 可動態加載或卸載對應的特性包 | OSGi 編程模型支持 | 否 | 是,支持 Blue Print 1.0, WAB 1.0 | 開發工具 | 支持 Eclipse | 支持 Eclipse, IBM Rational Application Developer | 性能 | 一般 | 與傳統 WAS 具有相同的核心代碼,性能好 | 支持的操作系統 | Linux, Windows | Linux, Windows, AIX, Mac, HP-UX, Solaris, iSeries, zSeries | 配置文件 | 多個配置文件,更新后需重啟服務器 | 一個配置文件,更新后及時生效,無需重啟 | 可移植性 | 您可以利用 IBM Application Migration Toolkit 將 Tomcat 上開發的應用快速移植到 WebSphere 應用服務器。反之,則不然。 | Liberty 和傳統 WAS 對編程模型和標準的支持一致。在 Liberty 上開發的應用可以直接運行在傳統 WAS 之上。 | 社區 | http://tomcat.apache.org 有開發人員和用戶的郵件列表,沒有官方支持,有時回復不夠及時。 | http://wasdev.net,可以與開發人員直接交流 | 文檔 | 官方文檔涵蓋內容有限,但網絡上相關內容(包括:blog,技術文章等)廣泛。 | http://wasdev.net 上提供下載地址、文檔、視頻、音頻、樣本引用等。 | 長期戰略優勢 | 一般用于開發環境,生產環產應用的比較少。 支持的并發度不高,可擴展性不強。 | Liberty 與傳統 WAS 共享同一代碼,天生具有其高效穩定的特點。開發 - 測試 - 生產切換零代價。 可擴展性高,支持多個 server 間的負載均衡和故障恢復。 | Liberty 高速緩沖可以由 eXtreme Scale 提供嗎?可以,Liberty 可以和 eXtreme Scale 進行集成帶來高速緩存的特性。 Liberty 支持 IBM iSeries 嗎?支持,在 IBM iSeries 上的使用和在其他平臺上相同。 用戶可以在 Eclipse 中管理 Liberty 嗎?比如啟動和停止?可以,在 Eclipse 控制臺的 Servers 標簽中,展開您的 Liberty 下拉列表,會顯示出當前部署在該應用服務器上的全部應用,右擊某一應用,可以進行相關的啟 / 停 / 移除操作,參見截圖  但是在運行時環境里面,暫時不支持啟動和停止某一個特定的應用。 Liberty 能在 mobile 的設備上做開發(比如 ipad)嗎?目前不支持這樣做,但是 Liberty 支持在 MAC 系統上進行開發。 Liberty 是如何自動添加所需的功能特性的?在開發環境,即 Eclipse+WDT+Liberty runtime 時,Liberty 可以自動為應用添加所需的特性。此功能是 WDT 來實現的,其會自動掃描應用,判斷應用所采用的編程模型,然后為應用添加相應的功能支持。 如果直接使用 Liberty runtime 部署應用,Liberty 是不會自動為應用添加所需的特性的。 Liberty 如何處理不同的應用 /server 的端口沖突?通過在 Liberty 的運行時環境下面的 bootstrap.properties 和 server.xml 兩個文件進行相應的配置,該項配置需要重啟 Liberty。參考 信息中心進行配置。 除了 Liberty 之外,還有其他產品是基于 OSGi 架構的?Liberty 是完全基于 OSGi 的產品,其在構建中完全遵循了 OSGi 的編程模型規范。在應用服務器領域暫時還沒有發現其他的產品也完全采用 OSGi 的編程模型進行構建。 當啟用某個 Liberty 的特性時,Liberty 是及時動態的加載屬于該特性的 JAR 包,還是在 Liberty 啟動的時候就已經加載,只是此時才開始使用?一般來說,根據 bundle 的 Bundle-ActivationPolicy 值來確定是立刻啟動 bundle 還是按需啟動 bundle(lazy)。但是在 Liberty 中,大多數 bundle 都沒有設定這個值,默認的行為就是當 Liberty 啟動的時候 bundle 會被立即啟動,但是,我們需要說明的是: - liberty 中對于 bundle 的使用采用的 DS 的方式(聲明服務),bundle 與 bundle 之間是通過服務的調用來實現的,只有當去主動請求一個服務時,該服務的 bundle 提供者才會被加載,所以,當采用服務的管理模式后,我們并不需要特別在意 bundle 的加載方式。
- 在 liberty 中,只有很少的 bundle 設定了 Bundle-ActivationPolicy 值,此刻,這些 bundle 會根據值的設定選擇立刻或者按需啟動。
1、 復利會讓你富有,但變富得花時間。 巴菲特是了不起,可他像這樣當上數一數二的巨富是因為他60多年都是了不起的投資者。 他現在600億美元的資產凈值里,有597億美元是在過了50歲生日以后得到的。更確切地說,在60歲以后, 巴菲特才擁有其中570億美元。 他的秘訣就是時間。 大多數人在退休前一二十年才開始未雨綢繆,實際上,盡早開始儲蓄是很重要的。 2、 影響回報的一個最大變量是估值,你根本不曉得估值會怎樣。 未來的市場回報等于股息率+收益增長+/-市盈率(估值)變化。 股息率目前2%,估計每年收益增長的合理水平是5%,可市盈率就完全是未知數。 市盈率體現人們的預感,誰都沒辦法知道今后大家怎么看待未來。 如果有人說“我認為大多數人2023年會比現在心情好10%”,大家可能說這人有妄想癥。 但如果有人這么預計10年內的市場回報,我們管這人叫分析師。 3、 簡單通常比聰明更要緊。 如果有人2003年買了低成本的標普500指數基金,到2012年年底,可以收獲97%的回報。 而道瓊斯瑞信對沖基金指標的數據顯示,那些高端大氣的中性股市對沖基金同期平均市值還縮水了4.7%。 投資不像電腦,簡單基本的方法可能比那些復雜高端的更有威力。 投資也不是打高爾夫,投機者很有可能用出色的成績羞辱某些專家、老手。 4、 股市大起大落的幾率是100%。 大多數投資者理解股票可以產生更高的長期回報,但代價是波動性更大。 1900年以來,標普500年均回報率約6%,最高和最低的年底收盤價之間平均差距達到23%。 所以,下次要有誰費勁解釋為什么市場漲跌幾個百分點,那基本上就是在解釋為什么春天過了是夏天。 有人還問過老摩根市場今后會怎樣,據說他當時回答: 它會波動。 乍聽起來,這樣的回答是在轉移重點,事實上絕非虛言。 5、金融圈大多都是怪人、騙子和推銷員。 大多數推銷金融產品的人只對你的錢財感興趣,因為他們可以借此收費。 要做 理想論壇的權威,根本不需要經驗、證書甚至常識。 可惜,往往某位權威叫喚得越響亮、越語出驚人,得到的關注就越多,即便這樣一來他更有可能出錯,也是如此。股
|