jetty使用技巧收集 – JAVA編程語言程序開發技術文章

適用與jetty7和jetty8
1,jetty中使用GBK編碼
    首先編碼過濾器肯定是需要的,然後在啟動服務器命令中添加如下參數
-Dorg.eclipse.jetty.server.Request.queryEncoding=GBK -Dorg.eclipse.jetty.util.UrlEncoding.charset=GBK -Dorg.eclipse.jetty.util.URI.charset=GBK

2,jetty中通過jndi方式使用p6spy
(1)在lib目錄添加jdbc目錄,並添加以下jar包
commons-collections.jar
commons-dbcp-1.2.1.jar
commons-pool-1.3.jar
log4j-1.2.15.jar
ojdbc6.jar
p6spy.jar
(2)在start.ini的 OPTIONS中添加jdbc模塊配置
(3) 數據源配置
[html] 
 <New id="ds_dev" class="org.apache.commons.dbcp.BasicDataSource"> 
    <Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set> 
    <Set name="url">jdbc:oracle:thin:@10.0.20.80:1521:dev</Set> 
    <Set name="username">dev</Set> 
    <Set name="password">dev</Set> 
    <Set name="maxActive" type="int">100</Set> 
    <Set name="maxIdle" type="int">30</Set> 
    <Set name="maxWait" type="int">1000</Set> 
    <Set name="defaultAutoCommit" type="boolean">true</Set> 
    <Set name="removeAbandoned" type="boolean">true</Set> 
    <Set name="removeAbandonedTimeout" type="int">60</Set> 
    <Set name="logAbandoned" type="boolean">true</Set> 
    <Set name="testOnBorrow" type="boolean">true</Set> 
   </New> 
<New id="p6spyDataSourceTarget" class="com.p6spy.engine.spy.P6DataSource"> 
    <Set name="realDataSource">realJndiName</Set> 
</New> 
<New class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg>realJndiName</Arg> 
    <Arg> 
        <Ref id="ds_dev" /> 
    </Arg> 
</New> 
<New class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg>devdbDS</Arg> 
    <Arg> 
        <Ref id="p6spyDataSourceTarget" /> 
    </Arg> 
</New> 
其中程序中實際使用的jndi名稱是devdbDS。p6spyDataSourceTarget起到一個代理的作用。
3,在開發中避免服務器運行時資源文件被鎖定,不能修改
修改etc\webdefault.xml中useFileMappedBuffer的值為false
[html] 
<init-param> 
      <param-name>useFileMappedBuffer</param-name> 
      <param-value>false</param-value> 
</init-param> 
4,jetty服務器java.sql.SQLException: Already closed處理
在jetty的數據源配置中添加如下配置
[html] 
<Set name="testOnBorrow" type="boolean">true</Set> 
<Set name="testOnReturn" type="boolean">true</Set> 
<Set name="testWhileIdle" type="boolean">true</Set> 
<Set name="validationQuery" type="String">select 1 from dual</Set> 
分別是添加瞭連接池取出,返回,和空閑時是否測試連接的有效性。
其中validationQuery的測試連接有效性的sql配置需要根據數據庫進行調整。

 作者:fengyie007

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。