16.1 Tomcat介紹
Tomcat是Apache軟體基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。
java程式寫的網站用tomcat+jdk來運作
tomcat是一個中間件,真正起作用的,解析java腳本的是jdk
jdk(java development kit)是整個java的核心,它包含了java運作環境和一堆java相關的工具以及java基礎庫。
最主流的jdk為sun公司釋出的jdk,除此之外,其實IBM公司也有釋出JDK,CentOS上也可以用yum安裝openjdk
16.2 安裝jdk
jdk版本1.6,1.7,1.8
官網下載下傳位址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
axel http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz?AuthParam=1521222804_c825950e4d757e5ec277a8deadcf961c
下載下傳jdk8,放到/usr/local/src/目錄下
mv jdk-8u161-linux-x64.tar.gz /usr/local/src/
[[email protected] src]# tar zxf jdk-8u161-linux-x64.tar.gz
vi /etc/profile //最後面增加
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
或者使用>>追加也可以
cat >> /etc/profile <<EOF
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
EOF
[[email protected] src]# cat >> !$ <<EOF
cat >> /etc/profile <<EOF
> JAVA_HOME=/usr/local/jdk1.8/
> JAVA_BIN=/usr/local/jdk1.8/bin
> JRE_HOME=/usr/local/jdk1.8/jre
> PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
> CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
> EOF
[[email protected] src]# tail /etc/profile
unset -f pathmunge
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
[[email protected] src]# source !$
source /etc/profile
[[email protected] src]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
16.3 安裝Tomcat
官網
https://tomcat.apache.org/whichversion.html
下載下傳二進制包:
[[email protected] src]# axel http://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz
[[email protected] src]# tar zxf apache-tomcat-9.0.6.tar.gz
[[email protected] src]# mv apache-tomcat-9.0.6 /usr/local/tomcat
[[email protected] src]# /usr/local/tomcat/bin/startup.sh 開啟
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
檢視程序:
[[email protected] src]# ps aux | grep tomcat
root 4953 19.3 0.6 6971132 113716 pts/0 Sl 02:03 0:02 /usr/local/jdk1.8/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 4976 0.0 0.0 112660 968 pts/0 S+ 02:04 0:00 grep --color=auto tomcat
[[email protected] src]# netstat -antp | grep java
tcp6 0 0 :::8080 :::* LISTEN 4953/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 4953/java
tcp6 0 0 :::8009 :::* LISTEN 4953/java
[[email protected] src]#
三個端口8080為提供web服務的端口,8005為管理端口,8009端口為第三方服務調用的端口,比如httpd和Tomcat結合時會用到
[ro[email protected] src]# /usr/local/tomcat/bin/shutdown.sh //關閉tomcat
擴充
java容器比較
http://my.oschina.net/diedai/blog/271367
http://www.360doc.com/content/11/0618/21/16915_127901371.shtml
四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之簡單比較
現在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等等。下面對這四種Java EE容器進行了一番簡單的比對。 1. Tomcat是Apache鼎力支援的Java Web應用伺服器,由于它優秀的穩定性以及豐富的文檔資料,廣泛的使用人群,進而在開源領域受到最廣泛的
現在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等等。下面對這四種Java EE容器進行了一番簡單的比對。
1. Tomcat是Apache鼎力支援的Java Web應用伺服器(注:servlet容器),由于它優秀的穩定性以及豐富的文檔資料,廣泛的使用人群,進而在開源領域受到最廣泛的青睐。
2. Jboss作為Java EE應用伺服器,它不但是Servlet容器,而且是EJB容器,進而受到企業級開發人員的歡迎,進而彌補了Tomcat隻是一個Servlet容器的缺憾。
3. Resin也僅僅是一個Servlet容器,然而由于它優秀的運作速度,使得它在輕量級Java Web領域備受喜愛,特别是在網際網路Web服務領域,衆多知名公司都采用其作為他們的Java Web應用伺服器,譬如163、ku6等。
在商用應用伺服器裡主要有:Weblogic、Websphere,其中Weblogic我也使用過很長一段時間,當時也隻用其當Servlet容器,然而就在同等條件下,在性能及易用性等方面,要比Tomcat優秀很多。
4.glassfish是Sun公司推出的Java EE伺服器(Java EE容器),一個比較活躍的開源社群,不斷的通過社群的回報來提高其的可用性,經過glassfish v1 glassfish v2 到今天的glassfish v3 ,它已經走向成熟。Glassfish是一個免費、開放源代碼的應用服務,它實作了Java EE 5,Java EE 5 平台包括了以下最新技術:EJB 3.0、JSF 1.2、Servlet 2.5、JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等。
支援叢集,通過記憶體中會話狀态複制,增強了部署體系結構的可用性與可伸縮性,它對叢集有着很好的支援,可以簡單到通過添加機器,就可輕松的提高網站的 帶負載能力,在解析能力方面,它對html的吞吐能力與apache伺服器不分上下,就是tomcat所不能比的,支援目錄部署,熱部署,解決了 tomcat對熱部署能力的缺陷。在版本方面做的更加人性化,有開發時用的簡化版,專門用于部署web項目的版本,還要完全符合j2ee标準的版本
## tomcat,Jboss,weblogic差別、容器的作用
一、tomcat
Tomcat 伺服器是一個免費的開放源代碼的Web 應用伺服器,它是Apache 軟體基金會(Apache
Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個
人共同開發而成。由于有了Sun 的參與和支援,最新的Servlet 和JSP 規範總是能在Tomcat 中得
到展現,Tomcat 5 支援最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、性能穩定
,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟體開發商的認可,成為目前比較流行的
Web 應用伺服器。
Tomcat 很受廣大程式員的喜歡,因為它運作時占用的系統資源小,擴充性好,支援負載平衡與郵
件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程式員
都可以更改它或在其中加入新的功能。
Tomcat 是一個小型的輕量級應用伺服器,在中小型系統和并發通路使用者不是很多的場合下被普遍
使用,是開發和調試JSP 程式的首選。對于一個初學者來說,可以這樣認為,當在一台機器上配
置好Apache 伺服器,可利用它響應對HTML 頁面的通路請求。實際上Tomcat 部分是Apache 服務
器的擴充,但它是獨立運作的,是以當你運作tomcat 時,它實際上作為一個與Apache 獨立的進
程單獨運作的。
這裡的訣竅是,當配置正确時,Apache 為HTML頁面服務,而Tomcat 實際上運作JSP 頁面和
Servlet。另外,Tomcat和IIS、Apache等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是
一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。不過,Tomcat處理靜态HTML的
能力不如Apache伺服器。
相關連接配接:
http://tomcat.apache.org/ Tomcat概述
Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項
目,由Apache,Sun和其它一些公司及個人共同開發而成。由于有了Sun的參與和支援,最新的
Servlet和Jsp規範總能在Tomcat中得到展現。Tomcat被JavaWorld雜志的編輯選為2001年度最具創
新的java産品,可見其在業界的地位。
Tomcat 最新版本是4.0x.4.0x與3.x的架構不同,而是重新設計的。Tomcat4.0x中采用了新的
Servlet容器:Catalina,完整的實作了Servlet2.3和Jsp1.2規範。Tomcat提供了各種平台的版本
供下載下傳,可以從http://jakarta.apache.org上下載下傳其源代碼版或者二進制版。由于Java的跨平台
特性,基于Java的Tomcat也具有跨平台性。
與傳統的桌面應用程式不同,Tomcat中的應用程式是一個WAR(Web Archive)檔案。WAR是
Sun提出的一種Web應用程式格式,與JAR類似,也是許多檔案的一個壓縮包。這個包中的檔案按一
定目錄結構來組織:通常其根目錄下包含有Html和Jsp檔案或者包含這兩種檔案的目錄,另外還會
有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml檔案和一個classes
目錄,web.xml是這個應用的配置檔案,而classes目錄下則包含編譯好的Servlet類和Jsp或
Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的
lib目錄下,當然也可以放到系統的CLASSPATH中,但那樣移植和管理起來不友善。
在Tomcat中,應用程式的部署很簡單,你隻需将你的WAR放到Tomcat的webapp目錄下,Tomcat
會自動檢測到這個檔案,并将其解壓。你在浏覽器中通路這個應用的Jsp時,通常第一次會很慢,
因為Tomcat要将Jsp轉化為Servlet檔案,然後編譯。編譯以後,通路将會很快。另外Tomcat也提
供了一個應用:manager,通路這個應用需要使用者名和密碼,使用者名和密碼存儲在一個xml檔案中
。通過這個應用,輔助于Ftp,你可以在遠端通過Web部署和撤銷應用。當然本地也可以。
Tomcat不僅僅是一個Servlet容器,它也具有傳統的Web伺服器的功能:處理Html頁面。但是
與Apache相比,它的處理靜态Html的能力就不如Apache.我們可以将Tomcat和Apache內建到一塊,
讓Apache處理靜态Html,而Tomcat處理Jsp和Servlet.這種內建隻需要修改一下Apache和Tomcat的
配置檔案即可。
另外,Tomcat提供Realm支援。Realm類似于Unix裡面的group.在Unix中,一個group對應着系
統的一定資源,某個group不能通路不屬于它的資源。Tomcat用Realm來對不同的應用(類似系統
資源)賦給不同的使用者(類似group)。沒有權限的使用者則不能通路這個應用。Tomcat提供三種
Realm,1:JDBCRealm,這個Realm将使用者資訊存在資料庫裡,通過JDBC獲得使用者資訊來進行驗證
。2:JNDIRealm,使用者資訊存在基于LDAP的伺服器裡,通過JNDI擷取使用者資訊。3:MemoryRealm
,使用者資訊存在一個xml檔案裡面,上面講的manager應用驗證使用者時即使用此種Realm.通過Realm
我們可以友善地對通路某個應用的客戶進行驗證。
在Tomcat4中,你還可以利用Servlet2.3提供的事件監聽器功能,來對你的應用或者Session
實行監聽。Tomcat也提供其它的一些特征,如與SSL內建到一塊,實作安全傳輸。還有Tomcat也提
供JNDI支援,這與那些J2EE應用伺服器提供的是一緻的。說到這裡我們要介紹一下通常所說的應
用伺服器(如WebLogic)與Tomcat有何差別。應用伺服器提供更多的J2EE特征,如EJB,JMS,
JAAS等,同時也支援Jsp和Servlet.而Tomcat則功能沒有那麼強大,它不提供EJB等支援。但如果
與JBoss(一個開源的應用伺服器)內建到一塊,則可以實作J2EE的全部功能。既然應用伺服器具
有Tomcat的功能,那麼Tomcat有沒有存在的必要呢?事實上,我們的很多中小應用不需要采用EJB
等技術,Jsp和Servlet已經足夠,這時如果用應用伺服器就有些浪費了。而Tomcat短小精悍,配
置友善,能滿足我們的需求,這種情況下我們自然會選擇Tomcat.
基于Tomcat的開發其實主要是Jsp和Servlet的開發,開發Jsp和Servlet非常簡單,你可以用
普通的文本編輯器或者IDE,然後将其打包成WAR即可。我們這裡要提到另外一個工具Ant,Ant也
是Jakarta中的一個子項目,它所實作的功能類似于Unix中的make.你需要寫一個build.xml檔案,
然後運作Ant就可以完成xml檔案中定義的工作,這個工具對于一個大的應用來說非常好,我們隻
需在xml中寫很少的東西就可以将其編譯并打包成WAR.事實上,在很多應用伺服器的釋出中都包含
了Ant.另外,在Jsp1.2中,可以利用标簽庫實作Java代碼與Html檔案的分離,使Jsp的維護更友善
。
Tomcat也可以與其它一些軟體內建起來實作更多的功能。如與上面提到的JBoss內建起來開發
EJB,與Cocoon(Apache的另外一個項目)內建起來開發基于Xml的應用,與OpenJMS
內建起來開發JMS應用,除了我們提到的這幾種,可以與Tomcat內建的軟體還有很多。
二、Jboss
JBoss是全世界開發者共同努力的成果,一個基于J2EE的開放源代碼的應用伺服器。 因為JBoss代
碼遵循LGPL許可,你可以在任何商業應用中免費使用它,而不用支付費用。JBoss支援EJB 1.1和
EJB 2.0 EJB3.0的規範,它是一個管理EJB的容器和伺服器。類似于Sun's J2SDK Enterprise
Edition(J2EE),JBoss的目标是一個源代碼開放的J2EE環境。但是JBoss核心服務僅是提供EJB
伺服器。JBoss不包括serverlers/JSP page 的WEB容器,當然可以和Tomcat或Jetty綁定使用。
JBoss還具有如下六大優點:
1、JBoss是免費的,開放源代碼J2EE的實作,它通過LGPL許可證進行釋出。
2、JBoss需要的記憶體和硬碟空間比較小。
3、安裝非常簡單。先解壓縮JBoss打封包件再配置一些環境變量就可以了。
4、JBoss能夠"熱部署",部署BEAN隻是簡單拷貝BEAN的JAR檔案到部署路徑下就可以了。如果沒有
加載就加載它;如果已經加載了就解除安裝掉,然後LOAD這個新的。
5、JBoss與Web伺服器在同一個Java虛拟機中運作,Servlet調用EJB不經過網絡,進而大大提高運
行效率,提升安全性能。
6、使用者可以直接實施J2EE-EAR,而不是以前分别實施EJB-JAR和Web-WAR,非常友善。
JBoss的安裝和配置可以直接拷貝使用,但是要改動 %JBoss-HOME%\bin\run.bat裡JAVA-HOME的設
置,改成本機JDK的目錄。運作run.bat來啟動JBoss
關閉JBoss:關閉JBoss的 DOS 視窗或按"CTRL + C"
JBoss的目錄結構
1、bin:開始和停止JBoss的地方。
其中有兩個主要的批處理檔案:run.bat和shutdown.bat。要啟動JBoss隻要執行run.bat檔案即可
;要停止JBoss必須執行shutdown.bat。
注意,shutdown.bat檔案直接執行并不會自動停止JBoss,它必須要輸入參數,參數意義如下:
h顯示幫助資訊;D設定系統屬性;-停止處理選項;s停止用JNDI URL指定的遠端服務;n通過制定
JMX名字來停止服務;a适配到指定的JNDI名稱的遠端服務;u指定使用者名稱;p指定使用者密碼;S停
止伺服器;e從虛拟機退出;H暫停。
一般,我們使用S選項來停止伺服器。即執行shutdown.bat -S。
2、docs:放置JBoss的例子、測試腳本和各種腳本配置檔案的DTD。
3、lib:放置JBoss所需要的部分jar封包件。
4、client:放置EJB用戶端運作時所需要的jar包。
5、server:放置各啟動類型的伺服器端EJB配置所需要的檔案等。
6、backup
以80端口服務
修改這個檔案:
{%JBOSS_HOME%}\server\default\deploy\jbossweb-tomcat41.sar\META-INF\jboss-service.xml
在"8080"的配置後加入以下代碼
<!-- A HTTP/1.1 Connector on port 80 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="80" minProcessors="5" maxProcessors="100"
enableLookups="true" acceptCount="10" debug="0"
connectionTimeout="20000" useURIValidationHack="false"/>
重新啟動JBoss就OK了
JBoss的啟動過程
設定環境變量 JBOSS_CLASSPATH (可以自己加上安全管理器和xml解析器)
%JBOSS_CLASSPATH%;
%JAVA_HOME%/lib/tools.jar;
run.jar
../lib/crimson.jar;
設定啟動參數JAXP(xml解析器和相應工廠)
啟動
設定配置資訊
讀取配置檔案JBoss.properties,儲存在系統屬性中(System.properties)
設定預設屬性jboss.home和java.security.auth.login.config
建立MBeanServer.的執行個體:
把配置檔案和更新檔檔案所在的目錄指定給特定的遠端類加載器Mlet
加載儲存配置檔案(mlet會自動在配置檔案目錄中查找)
初始化并啟動MBean
配置服務ConfigurationService
加載配置檔案
儲存配置
服務控制ServiceControl
初始化服務程式(init方法)
啟動服務程式(start方法)
在JBOSS中釋出檔案
1、制作JSP的war部署檔案
用"jar cvf hello.war index.jsp main.jsp"的方式生成把index.jsp和main.jsp檔案加入到
hello.war中。把生成的hello.war拷貝到jboss安裝目錄\server\default\deploy\下,部署成功
。用"http://localhost:8080/hello/"或"http://localhost:8080/hello/index.jsp"這兩個位址
進行測試。
2、制作Servlet的war部署檔案
A、用"javac -classpath "%CLASSPATH%;%jboss_home%
\server\default\lib\javax.servlet.jar" HelloWorld.java"的形式編譯HelloWorld.java(這
是一個Servlet)得到HelloWorld.class
B、寫一個web.xml配置檔案
代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>hello.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
每個标記必須小寫,否則會出錯。
C、先在c:\servlet下建立一個web-inf目錄,在目錄中放入web.xml檔案。
D、在web-inf目錄下建立一個classes目錄,放入編譯好的HelloWorld.class檔案
E、在c:\servlet下執行jar cvf hello.war .,很快就生成了一個名為hello.war的檔案,接着
把hello.war複制到jboss的安裝目錄\server\default\deploy\下完成部署。
3、也可以不打包,把檔案放在deploy下的同名檔案夾下也可以。比如原來是制作成hello.war文
件,可以建立一個名稱為hello.war的檔案夾,把要釋出的檔案拷貝到這個目錄底下也可以釋出成
功。
補充
1、JBoss的預設端口是8080
3、對于NT和Win2000系統如果你要安裝NT或Win2000服務的話,可以把JBoss加在系統服務中,避
免你每次需要到JBoss目錄下運作run.bat指令,隻是當系統啟動時,自動啟動JBoss伺服器。
三、weblogic
WebLogic是美國bea公司出品的一個application server确切的說是一個基于j2ee架構的中間件,
webserver是用來建構網站的必要軟體用來解析釋出網頁等功能,它是用純java開發的。weblogic
本來不是由bea發明的,是它從别人手中買過來,然後再加工擴充。目前weblogic在世界
application server市場上占有最大的份額,其他還有象IBM的websphere,免費的tomcat、resin
等中間件。
BEA WebLogic是用于開發、內建、部署和管理大型分布式Web應用、網絡應用和資料庫應用的Java
應用伺服器。将Java的動态功能和Java Enterprise标準的安全性引入大型網絡應用的開發、內建
、部署和管理之中。
BEA WebLogic Server擁有處理關鍵Web應用系統問題所需的性能 、可擴充性和高可用性。
與BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可為部署适應性個性化電
子商務應用系統提供完善的解決方案。
BEA WebLogic Server具有開發和部署關鍵任務電子商務Web應用系統 所需的多種特色和優勢,包
括:
1)領先的标準
對業内多種标準的全面支援,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更為
簡單,并且保護了投資,同時也使基于标準的解決方案的開發更加簡便。
2)無限的可擴充性
BEA WebLogic Server以其高擴充的架構體系聞名于業内,包括客戶機連接配接的共享、資源pooling
以及頁和EJB元件群集。
3)快速開發
憑借對EJB和JSP的支援,以及BEA WebLogic Server 的Servlet元件架 構體系,可加速投放市場
速度。這些開放性标準與WebGain Studio配合時,可簡化開發,并可發揮已有的技能,迅速部署
應用系統。
4)部署更趨靈活
BEA WebLogic Server的特點是與領先資料庫、作業系統和Web伺服器 緊密內建。
5)關鍵任務可靠性
其容錯、系統管理和安全性能已經在全球數以千記的關鍵任務環境中得以驗證。
6)體系結構
BEA WebLogic Server是專門為企業電子商務應用系統開發的。企業電子商務應用系統需要快速開
發,并要求伺服器端元件具有良好的靈活性和安全性,同時還要支援關鍵任務所必需的擴充、性
能、和高可用性。BEA WebLogic Server簡化了可移植及可擴充的應用系統的開發,并為其它應用
系統和系統提供了豐富的互操作性。
憑借其出色的群集技術,BEA WebLogic Server擁有最高水準的可擴充 性和可用性。BEA
WebLogic Server既實作了網頁群集,也實作了EJB元件 群集,而且不需要任何專門的硬體或操作
系統支援。網頁群集可以實作透明的複制、負載平衡以及表示内容容錯,如Web購物車;元件群集
則處理複雜的複制、負載平衡和EJB元件容錯,以及狀态對象(如EJB實體)的恢複。
無論是網頁群集,還是元件群集,對于電子商務解決方案所要求的可擴充性和可用性都是至關重
要的。共享的客戶機/伺服器和資料庫連接配接以及資料緩存和EJB都增強了性能表現。這是其它Web應用系統所不具備的。
j2ee、j2se、ejb、javabean、serverlet、jsp之間關系
http://bbs.csdn.net/topics/50015576
Java是根(也是一門具體的語言);
J2EE、J2SE是Java在不同領域的具體應用;
J2SE用于應用程式開發,類似Windows平台應用軟體;
J2EE是個大概念,用于Web電子商務等方面;
EJB、Servlet和JavaBean的綜合靈活運用能形成優秀的J2EE平台;
你可以把Jsp看作是對Servlet的進一步封裝。
j2ee:這個東西代表兩個不同的東西,一種是sun的一種伺服器軟體,注意是一種具體的軟體,不是技術。另一種是泛指sun的java技術,包括jsp,servlet,javabean,ejb等。
j2se:我所知道的,sun的jdk有專門for電子裝置的版本,叫j2me,用來開發手機,pda等應用,j2se則是為計算機用。
javabean:通俗的講,就是封裝了好多function的類,用來被别的jsp,servlet等調用的。
ejb: 更通俗的講,可以讓你的javabean分布在多台計算機上以供你調用。
servlet: 用來通過http協定與使用者互動
jsp: servlet的UI設計太差,jsp可以實作更友善的UI設計。
struts: jsp把網頁和代碼混在一起,太亂,于是出了個struts可以幫你把jsp的UI和邏輯部分分開處理。
hibernate:jdo的替代品
tomcat server.xml配置詳解
http://blog.csdn.net/yuanxuegui2008/article/details/6056754

<Server>元素
它代表整個容器,是Tomcat執行個體的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個
<Service>元素.并且它不能做為任何元素的子元素.
< Server port ="8005" shutdown ="SHUTDOWN" debug ="0" >
1>className指定實作org.apache.catalina.Server接口的類.預設值為
org.apache.catalina.core.StandardServer
2>port指定Tomcat監聽shutdown指令端口.終止伺服器運作時,必須在Tomcat伺服器所在的機器上發出
shutdown指令.該屬性是必須的.
3>shutdown指定終止Tomcat伺服器運作時,發給Tomcat伺服器的shutdown監聽端口的字元串.該屬性必須設
置
<Service>元素
該元素由org.apache.catalina.Service接口定義,它包含一個<Engine>元素,以及一個或多個
<Connector>,這些Connector元素共享用同一個Engine元素
< Service name ="Catalina" >
< Service name ="Apache" >
第一個<Service>處理所有直接由Tomcat伺服器接收的web客戶請求.
第二個<Service>處理所有由Apahce伺服器轉發過來的Web客戶請求
1>className 指定實作org.apahce.catalina.Service接口的類.預設為
org.apahce.catalina.core.StandardService
2>name定義Service的名字
<Engine>元素
每個Service元素隻能有一個Engine元素.元素處理在同一個<Service>中所有<Connector>元素接收到的客
戶請求.由org.apahce.catalina.Engine接口定義.
< Engine name ="Catalina" defaultHost ="localhost" debug ="0" >
1>className指定實作Engine接口的類,預設值為StandardEngine
2>defaultHost指定處理客戶的預設主機名,在<Engine>中的<Host>子元素中必須定義這一主機
3>name定義Engine的名字
在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>
<Host>元素
它由Host接口定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛拟主機.它
包含了一個或多個Web應用.
< Host name ="localhost" debug ="0" appBase ="webapps" unpackWARs ="true" autoDeploy ="true" >
1>className指定實作Host接口的類.預設值為StandardHost
2>appBase指定虛拟主機的目錄,可以指定絕對目錄,也可以指定相對于<CATALINA_HOME>的相對目錄.如果
沒有此項,預設為<CATALINA_HOME>/webapps
3>autoDeploy如果此項設為true,表示Tomcat服務處于運作狀态時,能夠監測appBase下的檔案,如果有新有
web應用加入進來,會自運釋出這個WEB應用
4>unpackWARs如果此項設定為true,表示把WEB應用的WAR檔案先展開為開放目錄結構後再運作.如果設為
false将直接運作為WAR檔案
5>alias指定主機名稱,可以指定多個别名
6>deployOnStartup如果此項設為true,表示Tomcat伺服器啟動時會自動釋出appBase目錄下所有的Web應用
.如果Web應用中的server.xml沒有相應的<Context>元素,将采用Tomcat預設的Context
7>name定義虛拟主機的名字
在<Host>元素中可以包含如下子元素
<Logger>, <Realm>, <Value>, <Context>
<Context>元素
它由Context接口定義.是使用最頻繁的元素.每個<Context元素代表了運作在虛拟主機上的單個Web應用.
一個<Host>可以包含多個<Context>元素.每個web應用有唯一
的一個相對應的Context代表web應用自身.servlet容器為第一個web應用建立一個
ServletContext對象.
< Context path ="/sample" docBase ="sample" debug ="0" reloadbale ="true" >
1>className指定實作Context的類,預設為StandardContext類
2>path指定通路Web應用的URL入口,注意/myweb,而不是myweb了事
3>reloadable如果這個屬性設為true, Tomcat伺服器在運作狀态下會監視在WEB-INF/classes和Web-
INF/lib目錄CLASS檔案的改運.如果監視到有class檔案被更新,伺服器自重新加載Web應用
3>cookies指定是否通過Cookies來支援Session,預設值為true
4>useNaming指定是否支援JNDI,預設值為了true
在<Context>元素中可以包含如下元素
<Logger>, <Realm>, <Resource>, <ResourceParams>
<Connector>元素
由Connector接口定義.<Connector>元素代表與客戶程式實際互動的給件,它負責接收客戶請求,以及向客
戶傳回響應結果.
< Connector port ="8080" maxThread ="50" minSpareThreads ="25" maxSpareThread ="75"
enableLookups ="false" redirectPort ="8443" acceptCount ="100" debug ="0"
connectionTimeout ="20000" disableUploadTimeout ="true" />
< Connection port ="8009" enableLookups ="false" redirectPort ="8443" debug ="0"
protocol ="AJP/1.3" />
第一個Connector元素定義了一個HTTP Connector,它通過8080端口接收HTTP請求;第二個Connector元素定
義了一個JD Connector,它通過8009端口接收由其它伺服器轉發過來的請求.
Connector元素共用屬性
1>className指定實作Connector接口的類
2>enableLookups如果設為true,表示支援域名解析,可以把IP位址解析為主機名.WEB應用中調用
request.getRemoteHost方法傳回客戶機主機名.預設值為true
3>redirectPort指定轉發端口.如果目前端口隻支援non-SSL請求,在需要安全通信的場命,将把客戶請求轉
發至SSL的redirectPort端口
HttpConnector元素的屬性
1>className實作Connector的類
2>port設定Tcp/IP端口,預設值為8080,如果把8080改成80,則隻要輸入http://localhost 即可
因為TCP/IP的預設端口是80
3>address如果伺服器有二個以上ip位址,此屬性可以設定端口監聽的ip位址.預設情況下,端口會監聽服務
器上所有的ip位址
4>bufferSize設定由端口建立的輸入流的緩存大小.預設值為2048byte
5>protocol設定Http協定,預設值為HTTP/1.1
6>maxThreads設定在監聽端口的線程的最大數目,這個值也決定了伺服器可以同時響應客戶請求的最大數
目.預設值為200
7>acceptCount設定在監聽端口隊列的最大客戶請求數量,預設值為10.如果隊列已滿,客戶必須等待.
8>connectionTimeout定義建立客戶連接配接逾時的時間.如果為-1,表示不限制建立客戶連接配接的時間
JkConnector的屬性
1>className實作Connector的類
2>port設定AJP端口号
3>protocol必須設定為AJP/1.3
========================================================================================
<Server>元素
它代表整個容器,是Tomcat執行個體的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個<Service>元素.并且它不能做為任何元素的子元素.
<Server port="8005" shutdown="SHUTDOWN" debug="0">
1> className指定實作org.apache.catalina.Server接口的類.預設值為org.apache.catalina.core.StandardServer
2> port指定Tomcat監聽shutdown指令端口.終止伺服器運作時,必須在Tomcat伺服器所在的機器上發出shutdown指令.該屬性是必須的.
3> shutdown指定終止Tomcat伺服器運作時,發給Tomcat伺服器的shutdown監聽端口的字元串.該屬性必須設定
<Service>元素
該元素由org.apache.catalina.Service接口定義,它包含一個<Engine>元素,以及一個或多個<Connector>,這些Connector元素共享用同一個Engine元素
<Service name="Catalina">
<Service name="Apache">
第一個<Service>處理所有直接由Tomcat伺服器接收的web客戶請求.
第二個<Service>處理所有由Apahce伺服器轉發過來的Web客戶請求
1> className 指定實作org.apahce.catalina.Service接口的類.預設為org.apahce.catalina.core.StandardService
2> name定義Service的名字
<Engine>元素
每個Service元素隻能有一個Engine元素.元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求.由org.apahce.catalina.Engine接口定義.
<Engine name="Catalina" defaultHost="localhost" debug="0">
1> className指定實作Engine接口的類,預設值為StandardEngine
2> defaultHost指定處理客戶的預設主機名,在<Engine>中的<Host>子元素中必須定義這一主機
3> name定義Engine的名字
在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>
<Host>元素
它由Host接口定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛拟主機.它包含了一個或多個Web應用.
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
1> className指定實作Host接口的類.預設值為StandardHost
2> appBase指定虛拟主機的目錄,可以指定絕對目錄,也可以指定相對于<CATALINA_HOME>的相對目錄.如果沒有此項,預設為<CATALINA_HOME>/webapps
3> autoDeploy如果此項設為true,表示Tomcat服務處于運作狀态時,能夠監測appBase下的檔案,如果有新有web應用加入進來,會自運釋出這個WEB應用
4> unpackWARs如果此項設定為true,表示把WEB應用的WAR檔案先展開為開放目錄結構後再運作.如果設為false将直接運作為WAR檔案
5> alias指定主機名稱,可以指定多個别名
6> deployOnStartup如果此項設為true,表示Tomcat伺服器啟動時會自動釋出appBase目錄下所有的Web應用.如果Web應用中的server.xml沒有相應的<Context>元素,将采用Tomcat預設的Context
7> name定義虛拟主機的名字
在<Host>元素中可以包含如下子元素
<Logger>, <Realm>, <Value>, <Context>
<Context>元素
它由Context接口定義.是使用最頻繁的元素.每個<Context元素代表了運作在虛拟主機上的單個Web應用.一個<Host>可以包含多個<Context>元素.每個web應用有唯一
的一個相對應的Context代表web應用自身.servlet容器為第一個web應用建立一個
ServletContext對象.
<Context path="/sample" docBase="sample" debug="0" reloadbale="true">
1> className指定實作Context的類,預設為StandardContext類
2> path指定通路Web應用的URL入口,注意/myweb,而不是myweb了事
3> reloadable如果這個屬性設為true, Tomcat伺服器在運作狀态下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS檔案的改運.如果監視到有class檔案被更新,伺服器自重新加載Web應用
3> cookies指定是否通過Cookies來支援Session,預設值為true
4> useNaming指定是否支援JNDI,預設值為了true
在<Context>元素中可以包含如下元素
<Logger>, <Realm>, <Resource>, <ResourceParams>
Connector元素
由Connector接口定義.<Connector>元素代表與客戶程式實際互動的給件,它負責接收客戶請求,以及向客戶傳回響應結果.
<Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
第一個Connector元素定義了一個HTTP Connector,它通過8080端口接收HTTP請求;第二個Connector元素定義了一個JD Connector,它通過8009端口接收由其它伺服器轉發過來的請求.
Connector元素共用屬性
1> className指定實作Connector接口的類
2> enableLookups如果設為true,表示支援域名解析,可以把IP位址解析為主機名.WEB應用中調用request.getRemoteHost方法傳回客戶機主機名.預設值為true
3> redirectPort指定轉發端口.如果目前端口隻支援non-SSL請求,在需要安全通信的場命,将把客戶請求轉發至SSL的redirectPort端口
HttpConnector元素的屬性
1> className實作Connector的類
2> port設定Tcp/IP端口,預設值為8080,如果把8080改成80,則隻要輸入http://localhost 即可
因為TCP/IP的預設端口是80
3> address如果伺服器有二個以上ip位址,此屬性可以設定端口監聽的ip位址.預設情況下,端口會監聽伺服器上所有的ip位址
4> bufferSize設定由端口建立的輸入流的緩存大小.預設值為2048byte
5> protocol設定Http協定,預設值為HTTP/1.1
6> maxThreads設定在監聽端口的線程的最大數目,這個值也決定了伺服器可以同時響應客戶請求的最大數目.預設值為200
7> acceptCount設定在監聽端口隊列的最大客戶請求數量,預設值為10.如果隊列已滿,客戶必須等待.
8> connectionTimeout定義建立客戶連接配接逾時的時間.如果為-1,表示不限制建立客戶連接配接的時間
JkConnector的屬性
1> className實作Connector的類
2> port設定AJP端口号
3> protocol必須設定為AJP/1.3
tomcat常用資料庫連接配接的方法
http://wjw7702.blog.51cto.com/5210820/1109263
一、用于資料庫連接配接的術語:
JDBC:(Java database connectivity)是基于java資料通路技術的一個API通過用戶端通路伺服器的資料庫,是一個面向關系型資料庫并提供一種方法查詢和更新資料庫;
JNDI:(Java naming and directory interface)JNDI服務提供了對應用程式命名和目錄功 能的一種用java程式編寫的基于API的java平台;
DataSource:是一個通過JDBC API通路關系型資料庫的java對象,當與JNDI整合并在JDNI 名稱服務中注冊後能更好的工作;
二、tomcat連接配接常用資料庫的操作步驟:
(1)Tomcat配置Oracle DataSource:
1、在server.xml全局檔案中定義如下内容:
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users-->
<Resource name="jdbc/tomcat7" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:test"
description="test database for tomcat 7"
Configuration and Deployment
[ 46 ]
username="admin" password="admin" maxActive="20" maxIdle="10"
maxWait="-1"/>
</GlobalNamingResources>
2、http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 下載下傳Oracle JDBC驅動程式類并放在CATALINA_HOME/lib/目錄下,tomcat預設隻接 受.jar結尾的類,如果是zip壓縮格式需要将其重名為.jar結尾,然後放到 CATALINA_HOME/lib/目錄下;
3、在應用下面的WEB-INF/web.xml檔案中強制定義文檔類型定義,示例如下:
<resource-ref>
<description>Oracle Datasource for tomcat </description>
<res-ref-name>jdbc/tomcat7 </res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4、開發人員在代碼中引用JNDI并連接配接到資料庫;
(2)Tomcat配置mysql DataSource:
1、在server.xml全局檔案中定義如下内容:
<Resource name="jdbc/tomcat7" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="tomcatuser" password="tomcat"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/tomcat7"/>
2、在應用下面的WEB-INF/web.xml檔案中強制定義文檔類型定義,示例如下:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<description>Tomcat 7 test DB</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/tomcat7</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
3、http://dev.mysql.com/downloads/下載下傳MYSQL JDBC驅動程式類并放在 CATALINA_HOME/lib/目錄下,tomcat預設隻接受.jar結尾的類,如果是zip壓縮格式需 要将其重名為.jar結尾,然後放到CATALINA_HOME/lib/目錄下;
4、對連接配接tomcat的使用者授予全部權限,格式如下:
mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]
IDENTIFIED BY 'tomcat7' WITH GRANT OPTION;
mysql> create database tomcat7;
mysql> use tomcat7;
mysql> create table testdata ( id int not null auto_increment
primary key,foo varchar(25), bar int);
注:使用者密碼一定不要為空,否則會造成連接配接tomcat認證錯誤;
(3)Tomcat配置Postgresql DataSource:
1、在server.xml全局檔案中定義如下内容:
<Resource name="jdbc/tomcat7" auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/tomcat7"
username="tomcat7" password="tomcat" maxActive="20" maxIdle="10"
maxWait="-1"/>
2、http://jdbc.postgresql.org/download.html下載下傳PostgreSQL JDBC驅動類并放在 CATALINA_HOME/lib/目錄下,tomcat預設隻接受.jar結尾的類,如果是zip壓縮格式需 要将其重名為.jar結尾,然後放到CATALINA_HOME/lib/目錄下;
3、在應用下面的WEB-INF/web.xml檔案中強制定義文檔類型定義,示例如下:
<resource-ref>
<description>postgreSQL Tomcat datasource </description>
<res-ref-name>jdbc/tomcat7 </res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
轉載于:https://blog.51cto.com/235571/2130717