<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無聊人士

    搬家==》www.soapui.cn

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      32 隨筆 :: 0 文章 :: 60 評論 :: 0 Trackbacks

    #

    以前一直為KeepWatcher裝的那臺oracle服務器奇怪,中軟Linux 3.1的系統,用了一年,發現/etc/hosts.deny里面寫了近二十萬條ALL:xxx.xxx.xxx.xxx記錄。

    這兩天弄了臺淘汰下來的服務器,準備裝來做部門的cvs、bug、oracle服務器,想裝oracle的時候省事省心,就裝成中軟的Linux 3.1,連上斷掉再連,如此反復,最后發現自己上不去了,換臺機器上去才發現自己被加進ipchains和/etc/hosts.deny里面去了。

    開始懷疑是ipchains、iptables服務的問題,chkconfig --level 345 ipchains off以后,仍然如此。

    打電話問情報所的吳兵,剛把現象一講,他就直接說了,是hostsentry和portsentry兩個進程做的怪,看了一下,在/etc/rc.d/rc3.d下,這兩個東西都是S前綴的,停掉服務,終于OK。


    posted @ 2005-12-27 12:30 mmwy 閱讀(538) | 評論 (0)編輯 收藏

    在劉冬的文章“ Java虛擬機的最大內存是多少 ”一文中
    今天分析了當前比較流行的幾個不同公司不同版本JVM的最大內存,得出來的結果如下:

    公司     JVM版本     最大內存(兆)client     最大內存(兆)server
    SUN     1.5.x     1492     1520
    SUN     1.5.5(Linux)     2634     2660
    SUN     1.4.2     1564     1564
    SUN     1.4.2(Linux)     1900     1260
    IBM     1.4.2(Linux)     2047     N/A
    BEA     JRockit 1.5 (U3)     1909     1902

    除非特別說明,否則JVM版本都運行在Windows操作系統下

    附:如何獲得JVM的最大可用內存

    在命令行下用 java -XmxXXXXM -version 命令來進行測試,然后逐漸的增大XXXX的值,如果執行正常就表示指定的內存大小可用,否則會打印錯誤信息。

    實際發現版本上有細微差別的JDK最大容許內存值都不盡相同,因此在實際的應用中還是要自己試驗一下看到底內存能達到什么樣的值。

    通過這個表想說明的是,如果你的機器的內存太多的話,只能通過多運行幾個實例來提供機器的利用率了,例如跑Tomcat,你可以多裝幾個Tomcat并做集群,依此類推。

    我在新到的一臺dell 2850服務器上做測試

    1、使用sun jdk1.4.2_07,測試結果為
    [root@localhost bin]# ./java -Xmx3710M -version
    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    [root@localhost bin]# ./java -Xmx3700M -version
    java version "1.4.2_07"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05)
    Java HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode)
    2、使用sun jdk 1.5.6,測試結果為
    [root@localhost bin]# ./java -Xmx3700M -version
    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    Could not create the Java virtual machine.
    [root@localhost bin]# ./java -Xmx3600M -version
    java version "1.5.0_06"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
    Java HotSpot(TM) Server VM (build 1.5.0_06-b05, mixed mode)

    服務器的配置情況
    [root@localhost bin]# top

    top - 14:32:23 up 5 days, 21:06,  3 users,  load average: 0.00, 0.03, 0.00
    Tasks: 114 total,   1 running, 113 sleeping,   0 stopped,   0 zombie
    Cpu0  :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
    Cpu1  :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
    Cpu2  :  2.3% us,  0.0% sy,  0.0% ni, 97.7% id,  0.0% wa,  0.0% hi,  0.0% si
    Cpu3  :  0.3% us,  0.0% sy,  0.0% ni, 99.7% id,  0.0% wa,  0.0% hi,  0.0% si
    Mem:   4044816k total,  1810908k used,  2233908k free,    92088k buffers
    Swap:  2555888k total,        0k used,  2555888k free,  1333328k cached

    [root@localhost bin]# cat /proc/meminfo 
    MemTotal:      4044816 kB
    MemFree:       2234092 kB
    Buffers:         92088 kB
    Cached:        1333328 kB
    SwapCached:          0 kB
    Active:         671408 kB
    Inactive:       939560 kB
    HighTotal:           0 kB
    HighFree:            0 kB
    LowTotal:      4044816 kB
    LowFree:       2234092 kB
    SwapTotal:     2555888 kB
    SwapFree:      2555888 kB
    Dirty:               0 kB
    Writeback:           0 kB
    Mapped:         230684 kB
    Slab:           148664 kB
    Committed_AS:   642520 kB
    PageTables:       6332 kB
    VmallocTotal: 536870911 kB
    VmallocUsed:    264596 kB
    VmallocChunk: 536606195 kB
    HugePages_Total:     0
    HugePages_Free:      0
    Hugepagesize:     2048 kB

    [root@localhost bin]# cat /proc/cpuinfo 
    processor       : 0
    vendor_id       : GenuineIntel
    cpu family      : 15
    model           : 4
    model name      :                   Intel(R) Xeon(TM) CPU 3.00GHz
    stepping        : 3
    cpu MHz         : 2992.789
    cache size      : 2048 KB
    physical id     : 0
    siblings        : 2
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 5
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor ds_cpl cid cx16 xtpr
    bogomips        : 5931.00
    clflush size    : 64
    cache_alignment : 128
    address sizes   : 36 bits physical, 48 bits virtual
    power management:

    processor       : 1
    vendor_id       : GenuineIntel
    cpu family      : 15
    model           : 4
    model name      :                   Intel(R) Xeon(TM) CPU 3.00GHz
    stepping        : 3
    cpu MHz         : 2992.789
    cache size      : 2048 KB
    physical id     : 3
    siblings        : 2
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 5
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor ds_cpl cid cx16 xtpr
    bogomips        : 5980.16
    clflush size    : 64
    cache_alignment : 128
    address sizes   : 36 bits physical, 48 bits virtual
    power management:

    processor       : 2
    vendor_id       : GenuineIntel
    cpu family      : 15
    model           : 4
    model name      :                   Intel(R) Xeon(TM) CPU 3.00GHz
    stepping        : 3
    cpu MHz         : 2992.789
    cache size      : 2048 KB
    physical id     : 0
    siblings        : 2
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 5
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor ds_cpl cid cx16 xtpr
    bogomips        : 5980.16
    clflush size    : 64
    cache_alignment : 128
    address sizes   : 36 bits physical, 48 bits virtual
    power management:

    processor       : 3
    vendor_id       : GenuineIntel
    cpu family      : 15
    model           : 4
    model name      :                   Intel(R) Xeon(TM) CPU 3.00GHz
    stepping        : 3
    cpu MHz         : 2992.789
    cache size      : 2048 KB
    physical id     : 3
    siblings        : 2
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 5
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor ds_cpl cid cx16 xtpr
    bogomips        : 5980.16
    clflush size    : 64
    cache_alignment : 128
    address sizes   : 36 bits physical, 48 bits virtual
    power management:

    posted @ 2005-12-05 14:36 mmwy 閱讀(6409) | 評論 (5)編輯 收藏

    白衣同志是個好同志,“刨蟲”啊,俺現在用的O/R Broker就是白衣“刨”出來的!

    今天準備睡覺,發現白衣同志blog上在推薦“Web Service Framework:XFire”( http://m.tkk7.com/calvin/archive/2005/12/04/22390.html).嘿嘿,受夠了axis,終于解放了。

    xfire的user's guide做得很漂亮,俺這種E盲都能看個半懂。quick start看完,直接跳到spring一章,順帶拿手上的一個測試工程做測試,HelloXfire。

    xfire 要加的包一大堆,guide上“Dependency Guide”這一章純粹是在糊弄人,我的工程是webwork2.1.7(freemarker2.3.4)+spring1.2.5+ hibernate3.0.5+oracle8.1.7的東西,原來的jar不算,新加了一堆進去,最后所有的包加進來有19MB,暈啊!
    antlr-2.7.5H3.jar
    aopalliance.jar
    asm.jar
    asm-attrs.jar
    cglib-nodep-2.1_2.jar
    classes12.jar
    commons-codec-1.3.jar
    commons-collections-3.1.jar
    commons-dbcp-1.2.1.jar
    commons-fileupload.jar
    commons-io-1.1.jar
    commons-lang-2.1.jar
    commons-logging.jar
    commons-pool-1.2.jar
    concurrent-1.3.4.jar
    cos-multipart.jar
    dom4j-1.6.jar
    freemarker.jar
    groovy-all-1.0-jsr-04.jar
    hibernate3.jar
    javamail-1.3.2.jar
    jaxen-1.1-beta-8.jar
    jdom-1.0.jar

    jencrypt.jar
    jta.jar
    log4j-1.2.9.jar
    lucene-1.4.3.jar
    nls_charset12.jar
    ognl.jar
    oscache-2.2.jar
    oscore.jar
    quartz-1.5.0.jar
    quartz-oracle-1.5.0.jar
    quartz-weblogic-1.5.0.jar
    spring.jar
    spring-xwork-integration.jar
    stax-1.1.2-dev.jar
    stax-api-1.0.jar
    stax-utils-snapshot-20040917.jar

    velocity-dep.jar
    webflow-2.1.7.jar
    webwork-2.1.7.jar
    webwork2-spring.jar
    xfire-all-1.0-M6a.jar
    xwork.jar
    activation-1.0.2.jar
    commons-beanutils-1.7.0.jar
    wsdl4j-1.5.1.jar


    user's guide上說得比較清楚,下載下來的zip里面也有一個spring的example。
    首先是在web.xml中做配置,除了原來spring、webwork的,加上
     1    <context-param>
     2        <param-name>contextConfigLocation</param-name>
     3        <param-value>classpath:beans.xml,classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
     4    </context-param>
     5    <servlet>
     6        <servlet-name>xfire</servlet-name>
     7        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     8    </servlet>
     9    <servlet-mapping>
    10        <servlet-name>xfire</servlet-name>
    11        <url-pattern>/xfire/*</url-pattern>
    12    </servlet-mapping>


    然后在WEB-INF下面放一個xfire-servlet.xml文件,實際上就是一個spring的配置文件
     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
     3<beans>
     4    <!-- START SNIPPET: xfire -->
     5    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     6        <property name="urlMap">
     7            <map>
     8                <entry key="/echo" value-ref="echo" />
     9                <entry key="/HelloWorld" value-ref="HelloWorld" />
    10                <entry key="/AccountManager" value-ref="AccountManager-xfire" />
    11            </map>
    12        </property>
    13    </bean>
    14    <bean id="echoBean" class="com.yninfo.rules.services.impl.EchoImpl" />
    15    <!-- Declare a parent bean with all properties common to both services -->
    16    <bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter">
    17        <property name="serviceFactory" ref="xfire.serviceFactory" />
    18        <property name="xfire" ref="xfire" />
    19        <property name="serviceBean" ref="echoBean" />
    20        <property name="serviceInterface" value="com.yninfo.rules.services.Echo" />
    21    </bean>
    22    <bean id="HelloWorld" class="org.codehaus.xfire.spring.remoting.XFireExporter">
    23        <property name="serviceFactory" ref="xfire.serviceFactory" />
    24        <property name="xfire" ref="xfire" />
    25        <property name="serviceBean" ref="HelloService" />
    26        <property name="serviceInterface" value="com.yninfo.rules.services.HelloWorld" />
    27    </bean>
    28    <bean id="AccountManager-xfire" class="org.codehaus.xfire.spring.remoting.XFireExporter">
    29        <property name="serviceFactory" ref="xfire.serviceFactory" />
    30        <property name="xfire" ref="xfire" />
    31        <property name="serviceBean" ref="AccountManager" />
    32        <property name="serviceInterface" value="com.yninfo.rules.services.AccountManager" />
    33    </bean>
    34    <!-- END SNIPPET: xfire -->
    35</beans>
    36
    值得注意的是“serviceBean”,按user's guides上給的例子是“service”,結果是報錯,大意說service這個屬性沒有setter。
     1public class ServiceBean
     2    implements InitializingBean, ApplicationContextAware
     3{
     4
     5    private Object service;
     6    /**
     7     * Gets the object which backs this service.
     8     * @return
     9     */

    10    public Object getServiceBean()
    11    {
    12        return service;
    13    }

    14}

    我做測試的三個例子,echo是抄xfire examples上的,HelloWorld是一個groovy的例子
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
    <beans>
        
    <bean id="GroovyScriptFactory" class="org.springframework.beans.factory.script.groovy.GroovyScriptFactory">
            
    <property name="expirySeconds" value="20" />
        
    </bean>

        
    <bean id="HelloService" factory-bean="GroovyScriptFactory" factory-method="create">
            
    <constructor-arg index="0" value="classpath:com/yninfo/rules/services/impl/HelloWorldImpl.groovy" />
        
    </bean>
    </beans>
    而AccountManager,則是標準的spring+hibernate的東西。
     1    <bean id="AccountManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     2        <property name="transactionManager" ref="TransactionManager" />
     3        <property name="transactionAttributes">
     4            <props>
     5                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
     6                <prop key="load">PROPAGATION_REQUIRED,readOnly</prop>
     7                <prop key="*">PROPAGATION_REQUIRED</prop>
     8            </props>
     9        </property>
    10        <property name="target">
    11            <bean class="com.yninfo.rules.services.impl.AccountManagerImpl">
    12                <property name="accountDAO" ref="AccountDAO" />
    13            </bean>
    14        </property>
    15    </bean>

    配置完成后,啟動tomcat,用http://192.168.0.100:8080/rules/xfire/echo?wsdl可以看到wsdl的描述。

    在vs2005里面,建了個j#的工程(略)。。。

    注:手誤,把圖覆蓋了,只好全部刪掉

    posted @ 2005-12-05 03:20 mmwy 閱讀(7739) | 評論 (12)編輯 收藏

    需求很簡單,就是用js向后端請求,然后把請求的結果弄進一個select里面。一開始是用xmlrequest去請求后端一個groovy的url,得到一個xml,然后把xml的內容填進select里面去。做完老瞅著不順眼,正好在看ajax的資料,拿dwr改造一下。

    js是我一直很頭疼的事了,尤其是對dom的操作上面,dwr感覺就是在直接調java接口,操作java對象,省事省心啊。

    用dwr,先得在web.xml中配一下。

     1    <servlet>
     2        <servlet-name>dwr-invoker</servlet-name>
     3        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
     4        <init-param>
     5            <param-name>debug</param-name>
     6            <param-value>true</param-value>
     7        </init-param>
     8    </servlet>
     9    <servlet-mapping>
    10        <servlet-name>dwr-invoker</servlet-name>
    11        <url-pattern>/dwr/*</url-pattern>
    12    </servlet-mapping>
    13

    然后就是配dwr.xml文件了。
    dwr和spring貼得比較緊,不用折騰,直接讓dwr去調spring中定義的bean了。
     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
     3<dwr>
     4    <allow>
     5        <create javascript="ServerManager" creator="spring">
     6            <param name="beanName">ServerManager</param>
     7        </create>
     8    </allow>
     9</dwr>
    10
    我的project中,已經在web.xml中配了spring的listener,直接寫beanName就行。

    在ServerManager接口中定義了如下方法
      List<Server> loadAll(User manager, ServerStatus status, String order);
    因此,在dwr中定義了三個convert(一開始沒配,結果怎么調都不成功)。

    1        <convert converter="bean" match="com.yninfo.sa.domain.Server" />
    2        <convert converter="bean" match="com.yninfo.sa.domain.ServerStatus" />
    3        <convert converter="bean" match="com.yninfo.sa.domain.User" />


    loadAll方法中的manager參數,是用戶登錄成功后,session.setAttribute("user",user)存放的。在html里面,用js是無法讀到的,因此,自己定義了一個java bean。
    1public class Remote {
    2  public User getUser(HttpSession session) {
    3    return (User) session.getAttribute("user");
    4  }

    5}

    6

    同樣的,在dwr中配了一下
    1        <create javascript="Remote" creator="new">
    2            <param name="class" value="com.yninfo.sa.web.ajax.Remote" />
    3        </create>


    所有配置完成后,js代碼如下:
     1<script type='text/javascript' src='dwr/interface/Remote.js'></script>
     2<script type='text/javascript' src='dwr/interface/ServerManager.js'></script>
     3<script type='text/javascript' src='dwr/engine.js'></script>
     4<script type='text/javascript' src='dwr/util.js'></script>
     5<script>
     6    function init(){
     7        Remote.getUser(
     8            function(user){
     9                ServerManager.loadAll(user,null,null,load);
    10            }
    );
    11    }

    12    function load(data){
    13        for (var i=0; i<data.length; i++{
    14          document.DailyRecordAdd.elements["model.serverId"].options[i]=
    15            new Option(data[i].name,data[i].id);
    16        }

    17    }

    18    window.onload = function (){
    19        init();
    20    }

    21</script>


    最終的配置文件:
     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
     3<dwr>
     4    <allow>
     5        <create javascript="ServerManager" creator="spring">
     6            <param name="beanName">ServerManager</param>
     7            <include method="add" />
     8            <include method="findByPrimaryKey" />
     9            <include method="loadAll" />
    10        </create>
    11        <create javascript="Remote" creator="new">
    12            <param name="class" value="com.yninfo.sa.web.ajax.Remote" />
    13        </create>
    14        <convert converter="bean" match="com.yninfo.sa.domain.User" />
    15        <convert converter="bean" match="com.yninfo.sa.domain.Server" />
    16        <convert converter="bean" match="com.yninfo.sa.domain.ServerStatus" />
    17    </allow>
    18</dwr>
    19

    posted @ 2005-12-05 00:04 mmwy 閱讀(6405) | 評論 (8)編輯 收藏

    最近在RH 6.1、COSIX 3.1服務器上配置iptables,被ipchains弄得半死。

    iptables需要加入ip_tables模塊,但是由于ipchains從中作梗,每次都報錯。
    [root@cosix-31-oracle-01 /root]# iptables --list
    /lib/modules/2.4.18-5smp/kernel/net/ipv4/netfilter/ip_tables.o: init_module: Device or resource busy
    Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
    /lib/modules/2.4.18-5smp/kernel/net/ipv4/netfilter/ip_tables.o: insmod /lib/modules/2.4.18-5smp/kernel/net/ipv4/netfilter/ip_tables.o failed
    /lib/modules/2.4.18-5smp/kernel/net/ipv4/netfilter/ip_tables.o: insmod ip_tables failed
    iptables v1.2.5: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
    Perhaps iptables or your kernel needs to be upgraded.


    開始以為是服務器上安裝oracle8i時,降了gcc版本造成的,折騰好幾天,無意中在google上用“init_module: Device or resource busy”做關鍵詞google到某個maillist中的提示信息,恍然大悟

    首先停掉ipchains服務
    #chkconfig --level 345 ipchains off
    # service ipchains stop
    Flushing all chains: [  OK  ]
    Removing user defined chains: [  OK  ]
    Resetting built-in chains to the default ACCEPT policy:[  OK  ]
    去掉ipchains的模塊
    # rmmod ipchains

    使用vi編輯/etc/sysconfig/iptables文件(具體用哪個文件,要看/etc/rc.d/init.d/iptables腳本)。

    # Firewall configuration written by redhat-config-securitylevel
    # Manual customization of this file is not recommended.
    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    :RH-Firewall-1-INPUT - [0:0]
    -A INPUT -j RH-Firewall-1-INPUT
    -A FORWARD -j RH-Firewall-1-INPUT
    -A RH-Firewall-1-INPUT -i lo -j ACCEPT
    -A RH-Firewall-1-INPUT -p icmp -j ACCEPT
    -A RH-Firewall-1-INPUT -p 50   -j ACCEPT
    -A RH-Firewall-1-INPUT -p 51   -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/24  -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 61.138.209.0/24 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 61.166.155.0/24 -j ACCEPT

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521         -j ACCEPT

    -A RH-Firewall-1-INPUT -p udp -s 61.138.209.0/24 -j ACCEPT

    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    COMMIT

    啟動iptables服務
    #service iptables start
    Flushing all current rules and user defined chains: [  OK  ]
    Clearing all current rules and user defined chains: [  OK  ]
    Applying iptables firewall rules:
    [  OK  ]
    #chkconfig --level 345 iptables on



    posted @ 2005-11-21 18:58 mmwy 閱讀(1567) | 評論 (0)編輯 收藏

    折騰了很久,還是 char 發現的問題。

    在AS4 U2下,/etc/pam.d/ftp.vsftpd中如下定義

    auth  required   /lib/security/pam_userdb.so   db=/etc/vsftpd/vsftpd.login

    在使用db_load生成userdb文件時,應該使用

    db_load -T -t hash -f ftpuser /etc/vsftpd/vsftpd.login.db

    必須給定一個擴展名.db

    posted @ 2005-11-18 18:50 mmwy 閱讀(2131) | 評論 (0)編輯 收藏

    使用ww2的validator,taglib就只能使用xhtml了。taglib我一向討厭,再加上ww2 xhtml這套做得非常難看,自做主張的加一堆table、td之類的html標簽進去。

    看了一下xhtml的velocity模板,如果檢驗未通過,ww2將validators.xml中相應field檢驗失敗的message是放進fieldErrors里面的。

    checkbox.vm
    #if( $fieldErrors.get($parameters.name) )
      #set ($hasFieldErrors = $fieldErrors.get($parameters.name))
      #foreach ($error in $fieldErrors.get($parameters.name))
        <tr>
            <td align="left" valign="top" colspan="2"><span class="errorMessage">$!error</span></td>
        </tr>
      #end
    #end

    <tr>
        <td valign="top" colspan="2">
    #* Use an extra table so that the checkbox doesn't align with the other columns. *#
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td valign="middle">#parse("/template/simple/checkbox.vm")</td>
            <td width="100%" valign="middle"><label #if ($parameters.id) for="$!webwork.htmlEncode($parameters.id)"#end#if ($hasFieldErrors) class="checkboxErrorLabel"#else class="checkboxLabel"#end>$!webwork.htmlEncode($parameters.label)</label></td>
        </tr>
    </table>
    #parse("/template/xhtml/controlfooter.vm")

    我使用的模板引擎是freemarker,參照xhtml的vm代碼,自己寫了個marco。

    <#macro validError local>
        <#if req.method=='POST'>
            <#if
                fieldErrors?has_content &&
                fieldErrors[local]?exists
            >
                <br>
                <font color="red">
                    <#list fieldErrors[local] as error>
                        ${error}
                    </#list>
                </font>
            </#if>
        </#if>
    </#macro>

    模板示例:
                <tr>
                    <td width="80" align="right">登錄密碼:</td>
                    <td>
                    <input type="password" name="model.password"
                        value="${model.password?if_exists}" size="24">
                    <@validError local="model.password"/>
                    </td>
                </tr>
    posted @ 2005-11-18 12:07 mmwy 閱讀(1411) | 評論 (0)編輯 收藏

    在FreeMarker中,session是一個Hash。
    在處理hash類型時,我以前一直是用Session["xxxx"]來讀取的,今天翻freemarker manual,發現有這么一個示例。

    <#assign ages = {"Joe":23, "Fred":25} + {"Joe":30, "Julia":18}>
    - Joe is ${ages.Joe}
    - Fred is ${ages.Fred}
    - Julia is ${ages.Julia} 

    照此,修改了一下手上的nav.ftl模板

        <#if Session.user?exists>
            <p align="right">
            <a href="logout.ftl">注銷[${Session.user.loginName}]</a>
            </p>
        </#if>
    posted @ 2005-11-18 12:06 mmwy 閱讀(3544) | 評論 (0)編輯 收藏

    最初我是用spring的aop來實現spring與orbroker“結合”的,在befor的時候把orbroker和trans注進 service去,after的時候commit,如果出現exception由rollback。怎么看怎么別扭,還是 江南白衣 這個“刨蟲”提醒了一下,說是spring module的cvs上有orbrokerTemplate。

    有現成的東西,俺就不用現學木匠造輪子了,省事省心,還順眼。

    從spring module的cvs上下源碼,把org.springmodules.orm.orbroker、org.springmodules.orm.orbroker.support兩個package的東西拷進project(或者是打成jar扔進去)。

    與ibatis、hibernate一樣,java代碼部分很簡單,我做的測試代碼就這么幾行
    public interface ResultDAO {
      List find(String parentId, String catalogId);
    }
    public class ResultDAOORBroker extends BrokerDaoSupport implements ResultDAO {
      public List find(String parentId, String catalogId) {
        return this.getBrokerTemplate().selectMany("find",
            new String[]{"parentId", "catalogId"},
            new String[]{parentId, catalogId});
      }
    }
    public interface ResultManager {
      List<Result> find(String parentId, String catalogId);
    }

    public class ResultManagerImpl implements ResultManager {

      @SuppressWarnings("unchecked")
      public List<Result> find(String parentId, String catalogId) {
        return resultDAO.find(parentId, catalogId);
      }

      private ResultDAO resultDAO;
      public void setResultDAO(ResultDAO resultDAO) {
        this.resultDAO = resultDAO;
      }
    }
    最主要的還是xml的配置文件,與用ibatis大體上差不了多少。

    DataSource、TransactionManager是必須的
        <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="DataSource" />
        </bean>
        <bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
            <property name="driverClass" value="${marekt.jdbc.driver}" />
            <property name="user" value="${marekt.jdbc.user}" />
            <property name="password" value="${marekt.jdbc.password}" />
            <property name="jdbcUrl" value="${marekt.jdbc.url}" />
            <property name="initialPoolSize" value="2" />
        </bean>
        <bean id="PlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations" value="classpath:jdbc.properties" />
        </bean>
    然后是一個Broker的Factory
        <bean id="BrokerFactory" class="org.springmodules.orm.orbroker.BrokerFactoryBean">
            <property name="dataSource" ref="DataSource" />
            <property name="configLocation" value="classpath:orbroker/orbroker.xml" />
        </bean>

    剩下的事情就是DAO和Manager了。
        <bean id="ResultDAO" class="dao.impl.ResultDAOORBroker">
            <property name="broker" ref="BrokerFactory" />
        </bean>
        <bean id="ResultManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager" ref="TransactionManager" />
            <property name="transactionAttributes">
                <props>
                    <prop key="*">PROPAGATION_REQUIRED</prop>
                </props>
            </property>
            <property name="target">
                <bean class="services.impl.ResultManagerImpl">
                    <property name="resultDAO" ref="ResultDAO" />
                </bean>
            </property>
        </bean>
    posted @ 2005-11-15 23:48 mmwy 閱讀(471) | 評論 (0)編輯 收藏

    在O/R Broker User Guide的“Sub queries”部分講得非常清楚了,主要就是檢索的時候定義一個sub query。
    public class Organization {
     private Integer id;
     private Employee manager;
     private Set employees;//子查詢就做在這兒了
    }

    定義result-object的時候處理一下
    <result-object id="Organization" class="my.package.Organization">
    。。。。
     <property name="employees">
      <sub-query sql-statement="selectEmployeesByOrganization">
       <set-parameter name="organizationId" from-column="OrganizationID"/>
      </sub-query>
     </property>
    。。。。
    </result-object>
    posted @ 2005-11-15 23:48 mmwy 閱讀(417) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 下一頁 
    主站蜘蛛池模板: 五月天网站亚洲小说| 亚洲第一香蕉视频| 亚洲午夜电影在线观看| 亚洲精品无码久久久久APP | 国产美女被遭强高潮免费网站| 亚洲国产精品无码久久九九| 久久久久亚洲av无码尤物| 亚洲欧美日韩一区二区三区| a级毛片黄免费a级毛片| 成年女人18级毛片毛片免费| 亚洲人成网7777777国产| 亚洲一线产区二线产区区| 免费无码又爽又刺激网站直播| 成年女人喷潮毛片免费播放| 亚洲成av人片天堂网| 亚洲av无码一区二区三区天堂| 久久综合九色综合97免费下载| 国产精品免费一级在线观看| 91亚洲导航深夜福利| h视频免费高清在线观看| 成年女人午夜毛片免费视频| 亚洲精品国产字幕久久不卡| 亚洲爆乳成av人在线视菜奈实| 无码少妇精品一区二区免费动态 | 91精品成人免费国产片| 亚洲精品人成无码中文毛片| 亚洲国产精品午夜电影| 中文字字幕在线高清免费电影| 免费涩涩在线视频网| 亚洲福利视频一区二区三区| 在线视频网址免费播放| 在线观看亚洲免费| 亚洲一区二区三区免费观看| 青青青国产手机频在线免费观看 | 国产成人精品免费视频大全麻豆| 狠狠综合久久综合88亚洲| 无码亚洲成a人在线观看| 日本妇人成熟免费中文字幕| 亚洲AV成人片色在线观看高潮| 草久免费在线观看网站| 日韩伦理片电影在线免费观看|