Java程序實現部署及應用 html
POSIX :可移植操做系統,編程操做系統接口規範,實現跨平臺編譯運行。 前端
API:應用程序編程接口 java
ABI:應用程序二進制接口 描述了應用程序和操做系統之間,一個應用和它的庫之間,或者應用的組成部分之間的低接口. web
JAVA:包含四個獨立又彼此相關的技術 shell
Java設計語言 數據庫
JavaAPI :Java應用程序編程接口 apache
Java class 文件格式,須要運行在Java虛擬機中 編程
jvm :Java虛擬機 vim
JAVA流程 windows
一、JavaAPI和程序設計語言開發出源程序
二、Java源程序文件,一般以.java結尾
三、使用Java編譯器來編譯Java源程序文件
四、編譯完成以後保存爲類文件,以.class結尾
五、這些類文件必須找一個Java虛擬機才能跑起來
六、這些類文件在Java虛擬機上還須要類庫才能跑起來!
七、公共類須要用 class loader 才能加載!
JVM實現方式:
一、一次性解釋器:解釋的是字節碼並執行,解釋的過程是將字節碼轉換成二進制的過程。
二、即時編譯器:每個class類在運行的時候,解釋完的內容要緩存下來,第二次執行時,去緩存中取。依賴於更多內存緩存解碼後的結果。
三、自適應編譯器:自動緩存20%的執行頻率比較高的代碼,提升80%的速度。
JDK :Java開發環境+運行,是實現Java開發的最小環境
Java應用領域的不一樣分爲三類:
Java SE :Java標準版,
Java EE :Java企業版
Java ME :Java移動版
CGI(協議) :通用網關接口,將處理後的動態界面格式化成HTML格式顯示給用戶。
Servlet(Server Applet),全稱Java Servlet,是用Java編寫的服務器端程序。其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,
JSP全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,
它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而造成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其餘操做系統上運行。
.jsp ---> .java --->(JVM).class
jasper 幫助.jsp轉換成.java,Java編譯器幫助.java轉換成.class,JVM幫助.class轉換成程序文件。
JDK :提供了javac,可以幫助.java轉換成.class。
servlet容器:包含了JDK,又包含了JDK不具有的額外的組件
基於servlet容器的工做流程:
一、前端有一個web應用程序,負責接收用戶請求,一旦發現用戶請求的是CGI的內容,
二、servlet程序負責經過CGI協議跟web程序進行交互
三、請求的內容接收進來以後,在JVM上完成程序的執行
servlet容器負責接收CGI傳遞過來的請求,負責監控本地的.Java程序是否發生了修改,若修改,負責把它轉換成.class格式。(包含JDK)
web容器:包含了servlet與JSP框架的程序
鏈接器:真正想跟用戶請求的http請求交互,前端還要依賴於web服務器,鏈接器能夠實現就算沒有web服務器解碼http請求,封裝http響應,也能夠直接完成與用戶交互,
如果直接面向大量用戶請求,鏈接器壓力會變的很大,若前端給他放一個web服務器,web服務器再帶有緩存功能,那後端的鏈接器壓力會小不少,這種模式稱爲Java的web容器,或者應用程序服務器!
安裝JDK
一、默認安裝在/usr/java/目錄下,
二、使用rpm方式安裝Java
三、在/etc/profile.d/建立java.sh,內容爲:
export JAVA_HOME=/usr/local/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
四、執行一下文件:. /etc/profile.d/java.sh
五、使用命令查看Java版本號:java -version
Java配置參數方法:
-XX:+選項 :開啓 此參數指定的功能
-XX:-選項 :關閉功能
-XX:選項=值 :給指定的選項賦值
java -XX:+PrintFlagsFinal :顯示Java所有選項及其參數
Tomcat詳解
tomcat架構詳解
整個Tomcat容器架構從外向內一共5層
Tomcat在本身內部開發了一個使用Java語言開發了一個web服務器。
Tomcat自身內部就有一個web服務器,而這個web服務器自己運行起來之後,徹底能夠直接工做在前臺,讓用戶對本機發起web請求。
第一層是Tomcat服務器(server):每個server就是一個Tomcat實例,意味着啓動一個Tomcat就是啓動一個serve。
能夠直接響應解析http請求
第二層是Tomcat 服務(service):將一個或多個鏈接器關聯至一個引擎,
鏈接器(Connector):貫穿第一層到第三層,用於將server和引擎創建起來關聯關係,將server收到的請求轉發給某一個引擎的組件。有多個!
第三層是Tomcat 引擎:就是一個具備servlet 容器的Java虛擬機,也是具有了web容器功能的容器,解碼.java。
第四層是Tomcat 主機:能夠有多個,用來在引擎內部實現虛擬主機
第五層是上下文 :定義相似於Apache的路徑別名,配置一個Context最主要的是指定Web應用程序的根目錄,以便Servlet容器可以將用戶請求發往正確的位置。
容器類組件
Engine(引擎)
Host (主機)
Context(上下文)
頂級組件
server (服務器)
service (服務)
其他組件
Realm(領域):用戶帳戶數據庫,
Valve (閥門):實現用戶的認證
Logger:日誌記錄器
經常使用組件
一、Loader(類加載器)
Java的動態裝載功能是其語言功能強大表現之一,Servlet容器使用此功能在運行時動態裝載servlet和它們所依賴的類。Loader能夠用於Context中控制java類的加載
二、Manager
Manger對象用於實現HTTP會話管理的功能,Tomcat6中有5種Manger的實現:
1) StandardManager(標準管理器)
Tomcat6的默認會話管理器,用於非集羣環境中對單個處於運行狀態的Tomcat實例會話進行管理。當Tomcat關閉時,這些會話相關的數據會被寫入磁盤上的一個名叫SESSION.ser的文件,並在Tomcat下次啓動時讀取此文件。
2) PersistentManager(持久會話管理器)
當一個會話長時間處於空閒狀態時會被寫入到swap會話對象,這對於內存資源比較吃緊的應用環境來講比較有用。
3)DeltaManager
用於Tomcat集羣的會話管理器,它經過將改變了會話數據同步給集羣中的其它節點實現會話複製。這種實現會將全部會話的改變同步給集羣中的每個節點,也是在集羣環境中用得最多的一種實現方式。
4) BackupManager
用於Tomcat集羣的會話管理器,與DeltaManager不一樣的是,某節點會話的改變只會同步給集羣中的另外一個,而非全部節點。
5)SimpleTcpReplicationManager
Tomcat4時用到的版本,過於老舊了。
三、Stores(存儲)
持久管理器必須包含一個Store元素以指定將會話數據存儲至何處。這一般有兩種實現方式:FileStore(文件存儲)和JDBCStore(數據庫存儲)。
四、Resources
常常用於實如今Context中指定須要裝載的但不在Tomcat本地磁盤上的應用資源,如Java類,HTML頁面,JSP文件等。
五、Cluster
專用於配置Tomcat集羣的元素,可用於Engine和Host容器中。在用於Engine容器中時,Engine中的全部Host均支持集羣功能。在Cluster元素中,須要直接定義一個Manager元素,這個Manager元素有一個其值爲org.apache.catalina.ha.session.DeltaManager或org.apache.catalina.ha.session.BackupManager的className屬性。同時,Cluster中還須要分別定義一個Channel和ClusterListener元素。
5.一、Channel(通告)
用於Cluster中給集羣中同一組中的節點定義通訊"信道"。Channel中須要至少定義Membership、Receiver和Sender三個元素,此外還有一個可選元素Interceptor。
5.二、Membership(成員關係管理)
用於Channel中配置同一通訊信道上節點集羣組中的成員狀況,即監控加入當前集羣組中的節點並在各節點間傳遞心跳信息,並且能夠在接收不到某成員的心跳信息時將其從集羣節點中移除。Tomcat6中Membership的實現是org.apache.catalina.tribes.membership.McastService。
5.三、Sender(心跳發送)
用於Channel中配置"複製信息"的發送器,實現發送須要同步給其它節點的數據至集羣中的其它節點。發送器不須要屬性的定義,但能夠在其內部定義一個Transport元素。
5.4、 Transport(發送集羣事務信息)
用於Sender內部,配置數據如何發送至集羣中的其它節點。Tomcat6有兩種Transport的實現:
1) PooledMultiSender
基於Java阻塞式IO,能夠將一次將多個信息併發發送至其它節點,但一次只能傳送給一個節點。
2)PooledParallelSener
基於Java非阻塞式IO,即NIO,能夠一次發送多個信息至一個或多個節點。
5.5 Receiver(接受集羣事務信息)
用於Channel定義某節點如何從其它節點的Sender接收復制數據,Tomcat6中實現的接收方式有兩種BioReceiver和NioReceiver。
Tomcat的主配置文件(server.xml)及其各組件之間的關係
<server>
<service>
<Connector />
<Engine>
<Host>
<Context> </Context>
</Host>
</Engine>
</service>
</server>
安裝Tomcat以前須要先安裝JDK,由於要依賴於開發環境!
Tomcat的安裝配置
一、解壓包:tar xf apache-tomcat-7.0.69.tar.gz -C /usr/local/
二、包名太長,進行軟鏈接:ln -sv apache-tomcat-7.0.69 tomcat
三、目錄結構
bin :二進制程序路徑,裏面有 .jar文件(Java歸檔壓縮包),shell腳本,還有 .bat(windows的批處理腳本)
conf :配置文件
server.xml:主配置文件
tomcat-users.xml:用戶認證
web.xml:默認的應用程序部署描述符 (部署:將一個web應用程序所依賴到的類裝載進JVM)
context.xml :默認爲上下文所提供的配置文件
logging.properties :定義日誌屬性
catalina.properties :定義應用程序自己屬性
catalina.policy :定義Tomecat自身安全策略,資源受權
lib :類庫文件
logs :日誌文件
temp :臨時文件目錄
webapps :應用程序目錄,每個程序文件夾中都有一個WEB-INF,這是程序的私有目錄。
work :工做目錄,
四、啓動Tomcat
4.一、輸出一個變量:vim /etc/profile.d/tomcat.sh ,內容爲:
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
4.二、 啓動 catalina.sh start ,而後查看端口:netstat -lnpt中的8080、8009
五、訪問網頁: 格式爲(IP地址:8080)
五、使用service啓動Tomcat:vim /etc/rc.d/init.d/tomcat
腳本:
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME=/usr/java/jdk1.7.0_67
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh $*
Tomcat優化
Tomcat的優化分紅兩塊:
Tomcat啓動命令行中的優化參數即JVM優化(catalina.sh)
ü 系統響應時間增快
ü JVM回收速度增快同時又不影響系統的響應率
ü JVM內存最大化利用
ü 線程阻塞狀況最小化
Tomcat容器自身參數的優化(server.xml)