Pages

顯示具有 Tomcat 標籤的文章。 顯示所有文章
顯示具有 Tomcat 標籤的文章。 顯示所有文章

2017年12月26日 星期二

Tomcat使用不同Port運行不同的webapps

<Service name="Catalina">
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="webapps"
                unpackWARs="true" autoDeploy="true">
        <Alias>aaa.xxx.com</Alias>
        <Context path="./" docBase="" debug="0" privileged="true" />
      </Host>
    </Engine>
</Service>

<Service name="CustomCatalina">
    <Connector executor="tomcatThreadPool"
               port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="CustomCatalina" defaultHost="localhost">
      <Host name="aaa.xxx.com" appBase="/webap/documents/aaa/"
                unpackWARs="true" autoDeploy="true">
        <Alias>aaa.xxx.com</Alias>
        <Context path="./" docBase="" debug="0" privileged="true" />
        <Valve className="org.apache.catalina.valves.AccessLogValve"
             directory="logs"   prefix="aaa.xxx.com_access_log" suffix=".txt"
             pattern="%h %l %u %t "%r" %s %b" resolveHosts="false" />
      </Host>
    </Engine>
</Service>

Tomcat Server.xml <Host>與<Context>差異

<!--  Host主要設定Domain Name的對應名稱與預設解WAR檔的目錄 -->
<Host name="app.google.com" appBase="webapps" unpackWARs="true"  xmlValidation="false" xmlNamespaceAware="false">

 <!--Context 主要設定URL後面的路徑對應名稱  -->

 <Context docBase="/webap/documents/app1" path="/" reloadable="true" workDir="/webap/documents/work/api1"></Context>

</Host>

<Host name="api.google.com" appBase="webapps"unpackWARs="true" xmlValidation="false" xmlNamespaceAware="false">

 <Context docBase="/webap/documents/api1" path="/" reloadable="true" workDir="/webap/documents/work/api1"></Context>

 <Context docBase="/webap/documents/api2" path="/test/api2" reloadable="true" workDir="/webap/documents/work/api1"></Context>

</Host>

2017年3月7日 星期二

Tomcat 9 多域名SSL設定

在Tomcat 9.0的環境下,可以支援多個域名的設定,首先要先在Connector上先設一個預設的域名與SSL的檔案設定後,再到SSLHostConfig標籤下添加其他域名。

註:JKS檔案可以經由KSE的軟體,將PFX的憑證檔案轉換成JSK的檔案。


 <Connector port="8443"
   protocol="org.apache.coyote.http11.Http11Nio2Protocol"
   maxThreads="150" SSLEnabled="true"
   scheme="https" secure="true"  
   clientAuth="false" sslProtocol="TLS"
   sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" URIEncoding="UTF-8"
   keystoreFile="conf/aaa.jks"
   keystorePass="changeit"  
   defaultSSLHostConfigName="*.aaa.com" >
  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
  <SSLHostConfig hostName="*.aaa.com" honorCipherOrder="false"
   ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
                   TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
                   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
                   TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
                   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
                   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
                   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
                   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
                   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
                   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
                   TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
                   TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
       TLS_RSA_WITH_AES_128_CBC_SHA"
   >
    <Certificate certificateKeystoreFile="conf/aaa.jks"
    certificateKeystorePassword="changeit" 
    certificateKeystoreType="RSA"/>
        </SSLHostConfig>
  <SSLHostConfig hostName="*.bbb.com" honorCipherOrder="false"
   ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
                   TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
                   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
                   TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
                   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
                   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
                   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
                   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
                   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
                   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
                   TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
                   TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
       TLS_RSA_WITH_AES_128_CBC_SHA"
   >
    <Certificate certificateKeystoreFile="conf/bbb.pfx"
    certificateKeystorePassword="changeit" 
    certificateKeystoreType="PKCS12"/>
        </SSLHostConfig>
    </Connector>

2011年10月19日 星期三

Apache Tomcat 6 的記憶體配置 (效能調整)

Tomcat Server 預設可使用的記憶體為 128M,

若有大量網頁需求時, 會因記憶體太少, 而導致 Tomcat 當掉無法運作,

所以, 若要應付大量網頁的需求,需增加JVM的記憶體大小如下:



First Calculate the number of threads you can create

(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

Example:

For Java 1.5 you will get the following results assuming that the OS reserves about 120MB:

1.5GB allocated to JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads

1.0GB allocated to JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads





Your Java Options Example: 

-Xms 512m
-Xmx 1024m
-Xss256k
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=128m 



另外一種方法,利用指令執行



於cmd下進入/bin
輸入 “tomcat6 //US//Tomcat6 –JvmMs 512 –jvmMx1024”
這兩個數值分別是最大與最小的heap size


如果是安裝是使用Windows服務帶起Tomcat,記得去註冊檔裡面修改參數

2010年12月31日 星期五

Apache Tomcat Native library which allows optimal performance

利用用Eclipse 和tomcat 6.0,運行tomcat時候出現如下問題:
tomcat6.0
The Apache Tomcat Native library which allows optimal performance in
production environments was not found on the java.library.path

這是一個跟ARP有關的問題

APR(Apache
portable Run-time libraries,Apache可移植運行庫)
,
主要為上層的應用程序提供一個可以跨越多操作系統平台使用的底層支持接口庫。在早期Apache版本中,應用程序本身必須能夠處理各種具體操作系統平台的細節,並針對不同的平台調用不同的處理函數。隨著Apache的進一步開發,Apache組織決定將這些通用的函數獨立出來並發展成為一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用APR而已。目前APR主要還是由Apache使用,不過由於APR的較好的移植性,因此一些需要進行移植的C程序也開始使用APR,開源項目比如Flood loadertester(http://httpd.apache.org/test /flood/,該項目用於服務器壓力測試,不僅僅適用於Apache)、FreeSwitch(www.freeswitch.org),JXTA-C(http://jxta-c.jxta.org,C版本的JXTA點對點平台實現);商業的項目則包括Blogline(http://www.bloglines.com/,covalent(http:
//www.covalent.net)等等。APR使得平台細節的處理進行下移。對於應用程序而言,它們根本就不需要考慮具體的平台,不管是Unix、Linux還是Window,應用程序執行的接口基本都是統一一致的。因此對於APR而言,可移植性和統一的上層接口是其考慮的一個重點。而APR最早的目的並不是如此,它最早只是希望將Apache中用到的所有代碼合併為一個通用的代碼庫,然而這不是一個正確的策略,因此後來APR改變了其目標。有的時候使用公共代碼並不是一件好事,比如如何將一個請求映射到線程或者進程是平台相關的,因此僅僅一個公共的代碼庫並不能完成這種區分。
APR的目標則是希望安全合併所有的能夠合併的代碼而不需要犧牲性能。APR的最早的一個目標就是為所有的平台(不是部分)提供一個公共的統一操作函數接口,這是一個非常了不起的目的,當然也是不現實的一個目標。我們不可能支持所有平台的所有特徵,因此APR目前只能為大多數平台提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。為了能夠實現這個目標,APR開發者必須為那些不能運行於所有平台的特性創建了一系列的特徵宏(FEATUREMACROS)以在各個平台之間區分這些特徵。


[解決辦法]
1. 到 [http://www.apache.org/dist/tomcat/tomcat-connectors/native/] 下載 [tcnative-1.dll]
2. 放到 [\TOMCAT_HOME\bin\] 下,重起eclipse 。

note: 放在 [windows\system32\下],應該也是可以。