Java軟件報表軟件技術(shù)博客

          java報表軟件技術(shù)匯總 java報表軟件制作 報表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          Java報表    源代碼 二進制
          JAVA報表

          Java報表軟件中,要注意以下幾點

          Connector的選擇選擇合適的Connector對于性能、配置的方便性有很重要的影響,目前大致上有JK1。x, JK2, mod_webapp三種connector可以使用。 JK使用比較廣泛。JK2是JK1.x的改進,比較新。但是不太容易配置,相關(guān)的文檔也比較少。此外,JK可以支持其他Web服務(wù)器和tomcat的集成。 但mod_webapp不支持。 因此,目前JK1.x是最好的選擇。 
          獲得JK
          使用二進制版本 如果你對報表中的手工編譯源代碼心有余悸,使用二進制版本也許是個明智的選擇。你可以從http://apache。linuxforum。net/dist/jakarta/tomcat-connectors/jk/binaries/下載JK1.x的最新版本。 然而,不幸的是二進制版本的JK和Apache的版本是捆綁在一起的,如果你使用了比較新的Apache(比如httpd-2.0.29)的話,往往很難找到對應(yīng)的二進制版本的JK。 
          手工編譯源代碼 對于不同的操作系統(tǒng)和Apache的版本,如果沒有預(yù)編譯好的JK,則需要進行手工編譯。除了Linux以外,其他操作系統(tǒng)一般不會安裝編譯環(huán)境。這時你還需要安裝編譯器。典型的例子是在Solaris上安裝GCC,或是在Windows上安裝Visual C++。另外,通常Open Source的軟件一般都是用GNU的autoconf、automake生成自動配置腳本和Makefile的,JK也不例外。除了Linux以外的Unix系統(tǒng)中的make不一定能夠兼容這些腳本。 所以如果你碰到這些問題就需要安裝gmake。下面以Solaris8為例說明如何安裝配置編譯環(huán)境: 在Solaris8中系統(tǒng)自帶的make不能兼容automake產(chǎn)生的某些Makefile。 
          需要的軟件包: 
          gcc-3.3-sol9-sparc-local.gz
           make-3.80-sol8-sparc-local.tar.gz
          所有需要的軟件包都可以在www.sunfreeware.com上下載到。 
          解壓縮:$gunzip gcc-3.3-sol9-sparc-local.gz

          $gunzip make-3.80-sol8-sparc-local.gz

          用pkgadd安裝,需要root權(quán)限:

          #pkgadd -d gcc-3.3-sol9-sparc-local

          #pkgadd -d make-3.80-sol8-sparc-local

          用pkgadd安裝后,通常gcc, make會被安裝在/usr/local/bin目錄下。這是需要讓gmake
          成為系統(tǒng)默認的make。檢查PATH環(huán)境變量,確保/usr/local/bin目錄的位置在Solaris8自帶的make的bin之前:$which make

          /usr/ccs/bin/make

          $echo $PATH

          /usr/bin:/usr/ccs/bin:/usr/local/bin

          如果發(fā)現(xiàn)gmake還不是系統(tǒng)默認的make,可以修改/etc/profile調(diào)整PATH。但有一種更簡單有效的方法,在/usr/bin目錄下建一個到/usr/local/bin/make的符號連接make,這樣就能使gmake成為系統(tǒng)默認的make了:

          # cd /usr/bin  # ln -s /usr/local/bin/make make

          報表軟件同樣的技巧可以解決一些Perl腳本對perl解釋器可執(zhí)行文件路徑引用的不正確。如某個perl腳本的頭信息有#!/usr/local/bin/perl -w但Perl在系統(tǒng)上被安裝在/usr/bin/目錄下。這時需要在 
          /usr/local/bin/下建立一個到/usr/bin/perl的符號連接perl。 
          編譯完JK后,把它安裝到apache中去,執(zhí)行:# make install 如果不成功,可以手工把mod_jk.so拷貝到apache的modules目錄下。 
          配置在具體動手配置之前應(yīng)該考慮一下你集成的目標:僅僅是簡單的把某個subcontext由tomcat處理,還是更高層次的動態(tài)/靜態(tài)內(nèi)容整合?是否允許HTTPS的轉(zhuǎn)發(fā);是否要進行負載平衡?具體配置的復(fù)雜度會因你的集成目標不同而大相徑庭。 
          假定我們的集成目標是:
           1.所有的靜態(tài)資源由Apache處理 
           2.所有的動態(tài)資源由Tomcat處理 
          配置Tomcatapache和tomcat整合大致上有三種方式: 
          1.在apache進程中運行tomcat來處理動態(tài)內(nèi)容 
          2.通過ajp13協(xié)議,apache將動態(tài)內(nèi)容的請求轉(zhuǎn)發(fā)給tomcat
           3.使用本地高速Unix domain socket,apache將動態(tài)內(nèi)容的請求轉(zhuǎn)發(fā)給tomcat方式2可以將apache和tomcat分布在不同的機器上,從而可以實現(xiàn)負載平衡。方式3速度比較快,當(dāng)apache和tomcat分布在相同的機器上時可以考慮使用。
          本文以方式2的為例說明tomcat和apache的集成。 
          為了能處理ajp13請求,tomcat需要起一個服務(wù)。 這是通過在tomcat的server.xml中定義一個Connector來實現(xiàn)的。 在最新的tomcat4.1.30版本中該Connector默認情況下是啟用的。如果沒有啟用在server.xml加入

          port="8009" minProcessors="5" maxProcessors="75"

          enableLookups="true" redirectPort="8443"

          acceptCount="10" debug="0" connectionTimeout="20000"

          useURIValidationHack="false"

          protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>;啟動tomcat, 檢查ajp13服務(wù)是否運行 
          netstat -a | grep 8009
          或則查看tomcat標準輸出上是否有類似的輸出:

          info: JK2: ajp13 listening on /0.0.0.0:8009
          2004-5-22 14:50:35 org.apache.jk.server.JkMain startinfo: Jk running ID=0 time=20/200 config=D:\Tomcat4.1\conf\jk2.properties

          配置Apache配置完Tomcat后,進行Apache的配置。首先,我們需要確定整個web應(yīng)用所在的context,確定了context也就能確定用戶通過什么樣的URL可以訪問該web應(yīng)用。比如,網(wǎng)站為www.example.com, 如果web應(yīng)用的context為purchase,那么用戶可以通過URL http://www.example.com/purchase訪問該應(yīng)用;如果web應(yīng)用的context為/,那么用戶可以通過URL http://www.example.com訪問該應(yīng)用。一般而言,將web應(yīng)用的context設(shè)定為/可以方便用戶。如果存在多個獨立的應(yīng)用,可以考慮把它們放到不同的子context中去。下面介紹把應(yīng)用context設(shè)為/情況下如何配置,其他情況類似。將jk的配置放在一個獨立的文件里,然后在httpd。conf中Include該文件
          第一步,讓apache加載mod_jk:

          #mod jk for tomcat-apache integration
          LoadModule jk_module modules/mod_jk.so

          把應(yīng)用context映射到存放該應(yīng)用靜態(tài)資源的目錄:

          # Static files in the examples webapp are served by apache

          Alias / /www/tomcat4。1/webapps/ROOT/

          同時,因為現(xiàn)在靜態(tài)資源不是由tomcat處理了,所以出于安全考慮和遵守JSP/Servlet規(guī)范需要禁止對WEB-INF子目錄的訪問:

          # The following line prohibits users from directly access WEB-INF;

          AllowOverride None

          deny from all

          ;在集成的調(diào)試階段可以考慮允許目錄列表功能:

          ;AllowOverride FileInfo AuthConfig Limit Indexes

          Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

          ;接下來一步告訴apache哪些動態(tài)內(nèi)容應(yīng)該讓tomcat處理,為了確定動態(tài)內(nèi)容URL的特征,應(yīng)該把web.xml中的所有servlet mapping中出現(xiàn)的URL模式在jk.conf中聲明:

          JkMount /BaseServlet worker1  JkMount /Servlet/* worker1

          JkMount /ProductUploadServlet worker1  JkMount /upload worker1

          JkMount /test worker1   JkMount /*.jsp worker1

          JkMount /*.do worker1

          其它可能需要修改的配置 配置項 說明 JkWorkersFile指定jk workers.properties的位置,如果是相對路徑,則假定在apache的ServerRoot目錄下 
          JkLogFile指定jk log文件的位置,如果是相對路徑,則假定在apachServerRoot目錄下 
          JkLogLevel指定jk log的級別有效的選項有:debug/error/info
           JkLogStampFormat指定log中的時間格式,使用c函數(shù)strftime的格式字符串語法 
          總結(jié)Tomcat和Apache集成時通常需要一下步驟: 
          1.決定使用哪種connector
           2.獲得connector,如果沒有現(xiàn)成的二進制的connector,則需要手工編譯,根據(jù)操作系統(tǒng)的不同可能還要設(shè)置編譯環(huán)境。 
          3.配置tomcat
           4.配置apache,確定context,將context對應(yīng)到應(yīng)用的頂層目錄。根據(jù)web.xml中的servlet映射把所有的動態(tài)內(nèi)容的url模式配置在apache中 
          5.測試 
          附錄一個完整的配置例子:

          #mod jk for tomcat-apache integration

          LoadModule jk_module modules/mod_jk.so

          JkWorkersFile conf/workers.properties

          # Where to put jk logs

          JkLogFile logs/mod_jk。log

          # Set the jk log level [debug/error/info]

          JkLogLevel debug

          # Select the log format

          JkLogStampFormat "[%Y-%m-%d %H:%M:%S] "

          # JkOptions indicate to send SSL KEY SIZE,

          JkOptions +ForwardKeySize +ForwardURICompat +ForwardURICompatUnparsed -ForwardDirectories

          # JkRequestLogFormat set the request format

          JkRequestLogFormat "%w %V %T"

          # Static files in the examples webapp are served by apache

          Alias / /www/tomcat4。1/webapps/ROOT/

          # The following line prohibits users from directly access WEB-INF

          ;AllowOverride Nonedeny from all

          ;AllowOverride FileInfo AuthConfig Limit Indexes

          Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

          ;#JkAutoAlias /www/tomcat4.1/webapps/ROOT

          JkMount /BaseServlet worker1

          JkMount /Servlet/* worker1

          JkMount /ProductUploadServlet worker1

          JkMount /upload worker1

          JkMount /test worker1

          JkMount /*.jsp worker1

          JkMount /*.do worker1

          此外,報表jk還需要一個workers.properties文件配置jk本身的參數(shù).如過不需要培植負載平衡 可以使用以下配置

          # Define 1 real worker using ajp13  worker.list=worker1

          # Set properties for worker1 (ajp13)  worker.worker1.type=ajp13

          worker.worker1.host=127.0.0.1  worker.worker1.port=8009

          worker.worker1.lbfactor=50  worker.worker1.cachesize=10

          worker.worker1.cache_timeout=600                                                   worker.worker1.socket_keepalive=1

          worker.worker1.socket_timeout=300

          要注意的是JkMount所引用的worker的名稱必須是在work.list定義過的。 

              




          主站蜘蛛池模板: 湘潭县| 山东省| 延边| 邛崃市| 玉溪市| 阳曲县| 青川县| 肇东市| 绥滨县| 灵川县| 志丹县| 双峰县| 阳新县| 温泉县| 郴州市| 台北县| 庆安县| 阜阳市| 台前县| 弥勒县| 营山县| 屯昌县| 泾川县| 广宁县| 敦化市| 桃源县| 海丰县| 南宫市| 绵阳市| 平阴县| 扎囊县| 龙海市| 乐东| 崇仁县| 晋宁县| 固阳县| 巫溪县| 鹤庆县| 南投市| 东平县| 胶南市|