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

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

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

    posts - 37,  comments - 53,  trackbacks - 0
      2006年12月4日
    grails應(yīng)用以war包的方式發(fā)布到weblogic本來應(yīng)該是沒有什么問題的,也不需要像網(wǎng)上說的那樣進(jìn)行weblogic的配置,但是有兩個(gè)小問題在實(shí)際的使用中需要注意:
    1.我的應(yīng)用中,使用了spring-security-cas的插件來實(shí)現(xiàn)cas client,但是不知道為什么在生產(chǎn)war包是,在web.xml中,有兩個(gè)CAS Single Sign Out Filter的mapping,結(jié)果導(dǎo)致發(fā)布失敗,需要手工刪除一個(gè)(目前的解決辦法)
    2.grails的urlmapping插件,如果映射“/”到某個(gè)action,目前好像是不成功的,但是只要不是“/”,則沒有這個(gè)問題。如果默認(rèn)的根目錄不是index.gsp,這個(gè)可能需要在訪問“/”時(shí)進(jìn)行跳轉(zhuǎn)的處理。

    posted @ 2011-02-09 16:21 雪地孤鴻 閱讀(514) | 評(píng)論 (0)編輯 收藏
    1.weblogic必須是10.3.4.0或以上版本,由于cas server采用了spring 2.5的版本,使用JPA2.0的原因,weblogic10.3.4之前的版本不支持jpa2.0
    2.cas server webapp 如果以war的方式發(fā)布,會(huì)因?yàn)閘og4j.xml的問題而不能正常發(fā)布,具體原因還沒有完全弄清楚,但是如果以解開后的文件夾目錄的方式發(fā)布則沒有問題。

    posted @ 2011-02-09 16:16 雪地孤鴻 閱讀(3249) | 評(píng)論 (2)編輯 收藏
    測(cè)試環(huán)境下使用的是mysql數(shù)據(jù)庫(kù),切換到正式的oralce數(shù)據(jù)庫(kù)中去發(fā)現(xiàn)cas server是無效的,主要的原因是由于數(shù)據(jù)庫(kù)的差異導(dǎo)致的
    認(rèn)證用戶的sql語(yǔ)句在mysql下為
    select password from user_login where username=? and enabled=true
    而在oracle下應(yīng)該為
    select password from user_login where username=? and enabled=1
    主要由于oralce和mysql對(duì)boolean字段的處理不一致導(dǎo)致的。

    posted @ 2011-01-26 09:05 雪地孤鴻 閱讀(708) | 評(píng)論 (0)編輯 收藏

    cas server logout后,默認(rèn)是停留在cas的退出頁(yè)面,一般我們需要重新轉(zhuǎn)向到客戶端網(wǎng)站的登錄或是相關(guān)的頁(yè)面,一般需要進(jìn)行一下配置

    1.cas-server端,配置文件為/WEB-INFO/cas-servlet.xml中的logoutController

     <bean id="logoutController" class="org.jasig.cas.web.LogoutController" 
         p:centralAuthenticationService-ref="centralAuthenticationService" 
         p:logoutView="casLogoutView" 
         p:warnCookieGenerator-ref="warnCookieGenerator" 
         p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"   
          p:followServiceRedirects="true"/>

    posted @ 2011-01-21 13:38 雪地孤鴻 閱讀(1051) | 評(píng)論 (1)編輯 收藏

    經(jīng)過將近兩天的測(cè)試,參考眾多網(wǎng)友的貢獻(xiàn),終于完成了對(duì)cas的主要配置和測(cè)試,現(xiàn)記錄如下

    基本需求:

    1.cas server-3.4.5,casclient-3.2(官方版本),均可在cas官方網(wǎng)站下載,http://www.jasig.org

    2.使用低成本的http協(xié)議進(jìn)行傳輸,俺買不起ssl證書

    3.通過jdbc進(jìn)行用戶驗(yàn)證

    4.需要通過casserver提供除登錄用戶名以外的附加信息

    參考資料:

    1.cas官方網(wǎng)站的用戶幫助手冊(cè)和wiki

    2.網(wǎng)友“城市獵人”的blog,http://yuzhwe.javaeye.com/blog/830143

    3.網(wǎng)友“悟空悟道”的blog,http://llhdf.javaeye.com/blog/764385

    4.其他網(wǎng)友貢獻(xiàn)的相關(guān)的blog,都是通過google出來,就不一一列出了,一并致謝!!!

    好了,下面進(jìn)入正題,如果您不想測(cè)試中出現(xiàn)異常情況,或是獲取不到相關(guān)數(shù)據(jù),請(qǐng)關(guān)注文中的紅色字體部分。

    (1)使用http協(xié)議的設(shè)置,如果您也像我一樣,買不起ssl數(shù)字證書,對(duì)安全的要求也不是特別的搞,下面的配置就可以幫助解決這個(gè)問題:

    在cas-server-webapp中的/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml文件中有如下配置

    <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
      p:cookieSecure="true"     //默認(rèn)為true,使用https,如果只需要http,修改為false即可
      p:cookieMaxAge="-1"
      p:cookieName="CASTGC"
      p:cookiePath="/cas" />

     (2)使用jdbc數(shù)據(jù)源進(jìn)行用戶認(rèn)證,需要修改cas的authenticationHandlers方式,在文件/WEB-INF/deployerConfigContext.xml有如下配置:

    <property name="authenticationHandlers">
       <list>
        <!--
         | This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
         | a server side SSL certificate.
         +-->
        <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
         p:httpClient-ref="httpClient" />
        <!--
         | This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS
         | into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
         | where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
         | local authentication strategy.  You might accomplish this by coding a new such handler and declaring
         | edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
         +-->
        <!--<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />-->
         <bean  class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
             <property name="dataSource" ref="dataSource" />
            
    <property name="sql" value="select password from userInfo where username=? and enabled=true" />
             //用戶密碼編碼方式

             <property name="passwordEncoder"
               ref="passwordEncoderBean"/>
             </bean>  
       </list>
      </property>

    該屬性中的list只要用一個(gè)認(rèn)證通過即可,建議將紅色部分放在第一位,如果確認(rèn)只用jdbc一種方式,其他認(rèn)證方式均可刪除。另外需要在在文件中添加datasoure和passordEncoder兩個(gè)bean,如下

    <!-- Data source definition -->
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
      </property>
      <property name="url">
        <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8</value>    //如果使用mysql數(shù)據(jù)庫(kù),應(yīng)該加上后面的編碼參數(shù),否則可能導(dǎo)致客戶端對(duì)TGT票據(jù)無法識(shí)別的問題
      </property>
      <property name="username"><value>root</value></property>
      <property name="password"><value>password</value></property>
     </bean>
     <bean id="passwordEncoderBean" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
            <constructor-arg value="SHA1" />  //cas
    server默認(rèn)支持MD5和SHA1兩種編碼方式,如果需要其他的編碼方式例如SHA256,512等,可自行實(shí)現(xiàn)org.jasig.cas.authentication.handler.PasswordEncoder接口
        </bean>

    附加備注:如果您是使用cas server的源碼自行編譯的話,需要在cas-server-web模塊的pom.xml中添加如下模塊的依賴:

    <dependency>
           <groupId>${project.groupId}</groupId>
           <artifactId>cas-server-support-jdbc</artifactId>
           <version>${project.version}</version>
      </dependency>  

    并添加對(duì)應(yīng)數(shù)據(jù)庫(kù)的jdbc的jar包。

    (3)讓cas server提供更多的用戶數(shù)據(jù)共客戶端使用

    通過測(cè)試,由于cas的代碼更新過程中的變化較大,所以包兼容的問題好像一直存在,在測(cè)試中我就碰到過,花費(fèi)時(shí)間比較多,建議同學(xué)們?cè)谑褂眠^程中使用官方的最新的發(fā)布版本。在我使用的這個(gè)版本中,請(qǐng)參考前面的關(guān)于server和client端的版本說明,應(yīng)該沒有包沖突的問題,測(cè)試通過。下面進(jìn)行配置,配置文件:/WEB-INF/deployerConfigContext.xml
    <property name="credentialsToPrincipalResolvers">
       <list>
           <!--<bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" />-->
        <!-- modify on 2011-01-18,add user info -->
        <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" >
          <property name="attributeRepository" >   //為認(rèn)證過的用戶的Principal添加屬性
          <ref local="attributeRepository"/>
         </property> 
        </bean>
          <bean
         class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
       </list>
      </property>
     修改該文件中默認(rèn)的 attributeRepositorybean配置
    <!-- 在這里配置獲取更多用戶的信息 -->
     <bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
      <constructor-arg index="0" ref="dataSource" />
      <constructor-arg index="1" value="select id as UId, password_hint as ph from userInfo where username=? and enabled=true" />
      <property name="queryAttributeMapping">
       <map>
       <entry key="username" value="uid"/><!-- 這里必須這么寫,系統(tǒng)會(huì)自己匹配,貌似和where語(yǔ)句后面的用戶名字段的拼寫沒有什么關(guān)系 -->
       </map>
      </property>
       <!-- 要獲取的屬性在這里配置 -->
      <property name="resultAttributeMapping">
       <map>
       <entry key="UId" value="userId" /> //key為對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名稱,value為提供給客戶端獲取的屬性名字,系統(tǒng)會(huì)自動(dòng)填充值
       <entry key="ph" value="passwordHint" />   
       </map>
      </property>
    </bean> 
    備注:網(wǎng)上有很多的關(guān)于這個(gè)的配置,但是如果您使用的是我提供的版本或是高于這個(gè)版本,就應(yīng)該象上面這樣配置,無用質(zhì)疑,網(wǎng)上大部分的配置都是基于
    person-directory-impl,person-directory-api
    1.1左右的版本,而最新的cas使用的是1.5的版本,經(jīng)過查看源代碼和api docs確定最新版本的屬性參數(shù)如上配置。

    修改該xml文件中最后一個(gè)默認(rèn)的serviceRegistryDao bean中的屬性全部注釋掉,或者刪除,
    這個(gè)bean中的RegisteredServiceImpl的ignoreAttributes屬性將決定是否添加attributes屬性內(nèi)容,默認(rèn)為false:不添加,只有去掉這個(gè)配置,
    cas server才會(huì)將獲取的用戶的附加屬性添加到認(rèn)證用的Principal的attributes中去,我在這里犯過這樣的錯(cuò)誤,最后還是通過跟蹤源碼才發(fā)現(xiàn)的。
    <bean
      id="serviceRegistryDao"
            class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
            <!--
                <property name="registeredServices">
                    <list>
                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="0" />
                            <property name="name" value="HTTP" />
                            <property name="description" value="Only Allows HTTP Urls" />
                            <property name="serviceId" value="http://**" />
                        </bean>

                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="1" />
                            <property name="name" value="HTTPS" />
                            <property name="description" value="Only Allows HTTPS Urls" />
                            <property name="serviceId" value="https://**" />
                        </bean>

                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="2" />
                            <property name="name" value="IMAPS" />
                            <property name="description" value="Only Allows HTTPS Urls" />
                            <property name="serviceId" value="imaps://**" />
                        </bean>

                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="3" />
                            <property name="name" value="IMAP" />
                            <property name="description" value="Only Allows IMAP Urls" />
                            <property name="serviceId" value="imap://**" />
                        </bean>
                    </list>
                </property>-->
               </bean>

     修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,如下:

    <%@ page session="false"%>
    <%@ taglib prefix="c" uri=">
    <%@ taglib uri="
    <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
     <cas:authenticationSuccess>
      <cas:user>${fn:escapeXml(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.id)}</cas:user>
      <c:if test="${not empty pgtIou}">
       <cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
      </c:if>
      <c:if test="${fn:length(assertion.chainedAuthentications) > 1}">
       <cas:proxies>
        <c:forEach var="proxy" items="${assertion.chainedAuthentications}"
         varStatus="loopStatus" begin="0"
         end="${fn:length(assertion.chainedAuthentications)-2}" step="1">
         <cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
        </c:forEach>
       </cas:proxies>
      </c:if>
       <c:if
       test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)

    >
    0}">
       <cas:attributes>
        <c:forEach
    var="attr"
         items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}"
         varStatus="loopStatus"
    begin="0"
         end="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)-1}"
         step="1">
         <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
        </c:forEach>
       </cas:attributes>
      </c:if>
     </cas:authenticationSuccess>
    </cas:serviceResponse>
    客戶端配置:
    1.過濾器CAS Validation Filter:
    <filter>
      <filter-name>CAS Validation Filter</filter-name>
      <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
      <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://domainserver:8081/cas</param-value>
      </init-param>
    </filter>
    在客戶端獲取信息
    AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
    String loginName = principal.getName();//獲取用戶名
    Map<String, Object> attributes = principal.getAttributes();
    if(attributes != null) {
     System.out.println(attributes.get("userId"));
     System.out.println(attributes.get("passwordHint"));
    }

     


     

    posted @ 2011-01-21 10:06 雪地孤鴻 閱讀(15883) | 評(píng)論 (9)編輯 收藏
    最近在使用G2G做項(xiàng)目,開發(fā)環(huán)境的數(shù)據(jù)庫(kù)為Mysql,在使用grails的分頁(yè)組件時(shí)沒有任何問題,但是將數(shù)據(jù)庫(kù)切換到ORACLE上就出現(xiàn)了問題,在分頁(yè)的時(shí)候,記錄總數(shù)是對(duì)了的,但在進(jìn)行翻頁(yè)的時(shí)候,總會(huì)有前一頁(yè)的數(shù)據(jù)存在,而當(dāng)前的數(shù)據(jù)總是顯示不對(duì),經(jīng)過將近一天的仔細(xì)排查才找到問題的關(guān)鍵,主要是由于數(shù)據(jù)庫(kù)的差異引起的,由于的我的查詢不需要進(jìn)行排序,所以在原來的查詢結(jié)果中沒有就排序語(yǔ)句,這就導(dǎo)致在mysql中完全正常的功能,到了oralce中每次查詢的排序不一致,結(jié)果就導(dǎo)致在翻頁(yè)的時(shí)候總有前一頁(yè)的數(shù)據(jù)存在,可能是由于數(shù)據(jù)庫(kù)的引擎規(guī)則的不一致導(dǎo)致的。
    再次記下!

    posted @ 2010-12-13 11:15 雪地孤鴻 閱讀(715) | 評(píng)論 (0)編輯 收藏
       今天早上出來給老婆大人買早點(diǎn),騎著老婆大人的小車,在路上奔馳,突然一種思緒飛入腦中,想想自己也是三十多歲的人了,卻是一事無成。我本IT出生,參加工作以來,卻一直徘徊在IT技術(shù)的和行業(yè)解決方案之間搖擺,最后終于下定決心朝著行業(yè)解決方案的方向發(fā)展,卻選擇了一個(gè)旅游行業(yè),雖說春秋在國(guó)內(nèi)也算的上不錯(cuò)的旅游公司,但這個(gè)行業(yè)確實(shí)亂象叢生。該公司在信息化方面更是不知所謂,早三暮四。雖然我不應(yīng)該對(duì)公司說三道四,但還是忍不住要說兩句。算了,這個(gè)都是我個(gè)人的抉擇,我現(xiàn)在是IT技術(shù)方面沒有什么看家的本事,行業(yè)知識(shí)也沒有什么,長(zhǎng)此以往,很是危險(xiǎn),隨著年齡的增長(zhǎng),抗風(fēng)險(xiǎn)能力會(huì)越來月差,我必須要重新的思考和抉擇,不然真的要落的老婆大人預(yù)見的場(chǎng)景了,我自己不甘心這樣,也 不能讓老婆看扁啊。行業(yè)的解決方案肯定是我的房展方向,是繼續(xù)在這個(gè)行業(yè)發(fā)展,還是重新挑選行業(yè),這是個(gè)比較重要的決定,但是不管怎么樣,我的老本行--IT技術(shù)也支撐不了幾年了,我必須要反省,深思我過去的規(guī)劃和執(zhí)行,重新規(guī)劃和執(zhí)行,努力的保障家庭幸福的經(jīng)濟(jì)基礎(chǔ),開拓新的事業(yè)。
    今天在這里寫下如此的只言片語(yǔ),就是為了鞭策自己,不能讓自己在被短期的利益而動(dòng)搖長(zhǎng)期的規(guī)劃和執(zhí)行,年紀(jì)也不小了,還沒有一個(gè)像樣的事業(yè),以后的風(fēng)險(xiǎn)會(huì)越來越大。
    posted @ 2010-05-03 10:35 雪地孤鴻| 編輯 收藏
    最近在試用Grails進(jìn)行開發(fā)一個(gè)小項(xiàng)目,需要使用oracle數(shù)據(jù)庫(kù),我使用的是Oracle 11g,簡(jiǎn)單的配置如下:
    1.添加jdbc lib到Grails項(xiàng)目的lib中,我使用的是ojdcb6_g.jar
    2.修改grails生成項(xiàng)目的DataSource.groovy文件中關(guān)于DataSource的相關(guān)配置:關(guān)鍵點(diǎn)是關(guān)于hibernate方言的配置,由于grails默認(rèn)使用的是HSQL內(nèi)存數(shù)據(jù)庫(kù),推薦使用的是mysql數(shù)據(jù)庫(kù);但是在使用oracle數(shù)據(jù)庫(kù)時(shí),需要配置hiernate的方言;其他的如URL,drive,username,password等配置和一般的配置沒有什么區(qū)別,詳細(xì)配置如下:
    dataSource {
        pooled = true
        driverClassName = "oracle.jdbc.OracleDriver"
        username = "paygateway"
        password = "paygateway"
        dialect = "org.hibernate.dialect.OracleDialect"
           
        logSql = true
    }


    posted @ 2010-03-19 13:38 雪地孤鴻 閱讀(2001) | 評(píng)論 (1)編輯 收藏
    公司剛剛買了一臺(tái)Thinkpad R400(7445-A63),預(yù)裝的vista home basic版本,由于第一次使用thinkpad系列,只是制作了一個(gè)start Recovery Disk盤,忘了制作系統(tǒng)恢復(fù)光盤,暈倒,不知道聯(lián)想能否免費(fèi)提供哦,那可是俺花銀子買的阿。當(dāng)時(shí)急著想試用一下win7(當(dāng)然是盜版的),所以就把硬盤格掉了,后來想恢復(fù)的時(shí)候已經(jīng)晚了,因?yàn)槲覜]有win7的序列號(hào),沒有辦法,只能重回xp時(shí)代了。
       由于硬盤是sata的,安裝過程很是郁悶,開始都引導(dǎo)不了,后來狠狠的google一把,終于搞定了:
      1.進(jìn)入BIOS-》CONIF,將硬盤的模式修改為compatibility,原來為ACHI
      2.到聯(lián)想的官方網(wǎng)站,現(xiàn)在相關(guān)xp的驅(qū)動(dòng)(http://think.lenovo.com.cn),網(wǎng)友提供列表如下;我是全部打包下載了:)
         安裝主板芯片組驅(qū)動(dòng)(Intel Chipset Drivers)
    安裝硬盤SATA驅(qū)動(dòng)(Intel Matrix Storage Manager)
    安裝ACPI電源驅(qū)動(dòng),即Power Manager Driver
    安裝Lenovo System Interface Driver
    啟動(dòng)系統(tǒng),系統(tǒng)安裝顯卡驅(qū)動(dòng)
    安裝網(wǎng)卡驅(qū)動(dòng)
    安裝無線驅(qū)動(dòng)
    如果此系統(tǒng)安裝為XP2的系統(tǒng),那么要安裝MODOM和聲卡的前提是安裝讀卡器(也有人叫HD總線)補(bǔ)丁: KB888111XPSP2.EXE;
    安裝聲卡驅(qū)動(dòng)和補(bǔ)丁
    安裝貓驅(qū)動(dòng)
    安裝藍(lán)牙驅(qū)動(dòng)
    安裝讀卡器驅(qū)動(dòng)
    安裝智能讀卡器驅(qū)動(dòng)
    安裝指紋驅(qū)動(dòng)        
    安裝PCI簡(jiǎn)易通訊控制器,也就是AMT(INTEL的主動(dòng)管理技術(shù)
    安裝TPM安全芯片的驅(qū)動(dòng)程序
    安裝攝像頭驅(qū)動(dòng)和補(bǔ)丁:7yca02ww.exe,Q909667.rar。
    安裝微軟雙核補(bǔ)丁和其他補(bǔ)丁:KB896256.exe, KB936357.exe, schedulerupdater.exe。
    安裝UltraNav driver
    安裝UltraNav Utility

    3.驅(qū)動(dòng)安裝完成后,重啟機(jī)器,進(jìn)入BIOS,將硬盤模式修改回原來的ACHI模式

    4.不知到何時(shí)能用上正中的win7盜版,感覺還是不錯(cuò),雖然我平時(shí)已經(jīng)不太用win系統(tǒng)了。:)


    posted @ 2009-12-20 11:25 雪地孤鴻 閱讀(1561) | 評(píng)論 (2)編輯 收藏
    ofbiz默認(rèn)的數(shù)據(jù)庫(kù)為derby,這個(gè)當(dāng)然不能在生產(chǎn)環(huán)境中使用,而且也不方便調(diào)試和管理。雖然ofbiz也支持很多的開源數(shù)據(jù)庫(kù),例如mysql等,但是我們這里還是使用主流的數(shù)據(jù)庫(kù)系統(tǒng)oracle 11g.詳細(xì)的操作如下
    1.更新JDBC驅(qū)動(dòng),將oracle最新的jdbc驅(qū)動(dòng)copy到${ofbiz install dir}/framework/entity/lib/jdbc 目錄下。
    2.設(shè)置實(shí)體引擎( Entity Engine)的缺省數(shù)據(jù)庫(kù)為oracle.在修改 ${ofbiz install dir}/framework/entity/config/entityengine.xml文件中修改配置:
       a.修改數(shù)據(jù)庫(kù)連接參數(shù):
         <datasource name="localoracle"
                helper-class="org.ofbiz.entity.datasource.GenericHelperDAO"
                schema-name="ofbiz" 你的數(shù)據(jù)庫(kù)schema名稱
                field-type-name="oracle"
                check-on-start="true"
                add-missing-on-start="true"
                alias-view-columns="false"
                join-style="ansi">
            <read-data reader-name="seed"/>
            <read-data reader-name="seed-initial"/>
            <read-data reader-name="demo"/>
            <read-data reader-name="ext"/>
            <inline-jdbc
                    jdbc-driver="oracle.jdbc.driver.OracleDriver"
                    jdbc-uri="jdbc:oracle:thin:@192.168.1.154:1521:ofbiz"  ofbiz為你的數(shù)據(jù)庫(kù)SID
                    jdbc-username="ofbiz"  用戶名
                    jdbc-password="ofbiz"  密碼
                    pool-minsize="2"
                    pool-maxsize="250"/>
        </datasource>
      b. 修改實(shí)體引擎的數(shù)據(jù)庫(kù)缺省配置如下:(將datasource-name的值設(shè)置為“localoracle”)
          <delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
            <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
        </delegator>
        <delegator name="default-no-eca" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" entity-eca-enabled="false" distributed-cache-clear-enabled="false">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
            <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
        </delegator>

        <!-- be sure that your default delegator (or the one you use) uses the same datasource for test. You must run "ant run-install" before running "ant run-tests" -->
        <delegator name="test" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
            <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
        </delegator>
        <delegator name="other" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
        </delegator>
    3.補(bǔ)充:在進(jìn)行以上配置時(shí),請(qǐng)確保你已經(jīng)存在ofbiz的數(shù)據(jù)庫(kù),實(shí)例,用戶等都已創(chuàng)建好。
    4. 初始化數(shù)據(jù)和導(dǎo)入:   
         ofbiz$ java -jar ofbiz.jar -install
    通過以上命令即可進(jìn)行數(shù)據(jù)庫(kù)的初始化和初始數(shù)據(jù)的導(dǎo)入,這里包括了ofbiz自帶的例子,應(yīng)用的所有的數(shù)據(jù)表和初始化數(shù)據(jù)

    5.問題:
    在使用oracle數(shù)據(jù)庫(kù)時(shí),當(dāng)前的版本可能會(huì)碰到ORA-01843:無效的月份的問題      

        以sys用戶登陸并創(chuàng)建Trigger:

        create or replace TRIGGER ON_CONNECT AFTER LOGON ON DATABASE
         DECLARE
         guser varchar2(30);
         begin
          SELECT sys_context('USERENV','SESSION_USER') into guser FROM dual;
             if (guser='ofbiz' or guser='OFBIZ') THEN
                EXECUTE IMMEDIATE 'alter session set nls_timestamp_format = ''YYYY-MM-DD HH24:MI:SS.FF''';
             end if;
         end;

    注意對(duì)登陸用戶名的判斷必須大小寫都要考慮.

    另:ofbiz用戶不能擁有dba的權(quán)限,同時(shí)ofbiz用戶比需要有UNLIMITED TABLESPACE的權(quán)限,否則在創(chuàng)建數(shù)據(jù)表的時(shí)候會(huì)報(bào)“數(shù)據(jù)庫(kù)空間不足”的錯(cuò)誤,導(dǎo)致無法創(chuàng)建表。

    6.參考:
    http://blog.csdn.net/blieveme/archive/2007/10/16/1826604.aspx
    http://docs.ofbiz.org/display/~jacopoc/OFBiz+and+Oracle

    今天就到這里吧,明天繼續(xù):) 
    posted @ 2009-09-03 20:27 雪地孤鴻 閱讀(2613) | 評(píng)論 (3)編輯 收藏
    apache版本2.2
    自帶mod_deflate.so和mod_headers.so
    如果沒有這兩個(gè)模塊,那么你就需要手工編譯并load這兩個(gè)模塊。
    我是在虛擬主機(jī)下加入一下配置即可
    <Location "/">
    SetOutputFilter DEFLATE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    Header append Vary User-Agent env=!dont-vary
    </Location>

    記住,以上配置,需要放到<Directory></Directory>之后,apache官方網(wǎng)站這么說的:)

    posted @ 2009-08-26 09:17 雪地孤鴻 閱讀(191) | 評(píng)論 (0)編輯 收藏
    今天發(fā)現(xiàn)linux服務(wù)器的/目錄磁盤使用率為100%,操作如下
    主要通過du -sh查找占用磁盤較多的目錄
    1.清除/var/log下的日志文件
    2.清除/var/spool/mail下占用磁盤較多的郵件目錄(我的服務(wù)上主要是root用戶的郵件比較多導(dǎo)致的)

    posted @ 2009-07-02 17:25 雪地孤鴻 閱讀(4367) | 評(píng)論 (0)編輯 收藏

    但是scim中文輸入不了, 上網(wǎng)找解決方案,最后成功的方法:

    sudo apt-get install scim-qtimm 安裝scim的qt模塊

    • sudo gedit /usr/bin/opera 在文件中加入export QT_IM_MODULE="scim"

    啟動(dòng)opera,問題解決。


    環(huán)境:

    ubuntu9.0.4

    opera9.6

    測(cè)試成功

    posted @ 2009-05-08 08:59 雪地孤鴻 閱讀(276) | 評(píng)論 (0)編輯 收藏

    鳴謝:http://www.phpma.com/linux/20070908/392.html

    Apache日志分析工具--AWStats6.9安裝使用
    1、事先安裝好Apache

    2、安裝awstats的命令(將awstats安裝在/opt/awstats目錄)
    mkdir -p /var/lib/awstats
    cd /opt
    wget http://www.awstats.cn/files/awstats-6.6.tar.gz
    tar zxvf awstats-6.6.tar.gz
    mv awstats-6.6 awstats
    cd awstats/tools/
    perl awstats_configure.pl

    3、Perl腳本awstats_configure.pl安裝過程(以下內(nèi)容引用AWStats英文使用說明)

    (1)
    -----> Running OS detected: Linux, BSD or Unix
    Warning: AWStats standard directory on Linux OS is '/usr/local/awstats'.
    If you want to use standard directory, you should first move all content
    of AWStats distribution from current directory:
    /opt/awstats
    to standard directory:
    /usr/local/awstats
    And then, run configure.pl from this location.
    Do you want to continue setup from this NON standard directory [yN] ?

    這時(shí)選擇y回車。

    (2)
    -----> Check for web server install

    Enter full config file path of your Web server.
    Example: /etc/httpd/httpd.conf
    Example: /usr/local/apache2/conf/httpd.conf
    Example: c:\Program files\apache group\apache\conf\httpd.conf
    Config file path ('none' to skip web server setup):

    第一次使用請(qǐng)輸入Apache的httpd.conf路徑,例如/opt/sina/apache/conf/httpd.conf
    以后如果再使用perl awstats_configure.pl生成配置文件,則可以輸入none跳過。

    (3)
    -----> Check and complete web server config file '/opt/sina/apache/conf/httpd.conf'
    Warning: You Apache config file contains directives to write 'common' log files
    This means that some features can't work (os, browsers and keywords detection).
    Do you want me to setup Apache to write 'combined' log files [y/N] ?

    選擇y,將日志記錄方式由CustomLog /yourlogpath/yourlogfile common改為更詳細(xì)的CustomLog /yourlogpath/yourlogfile combined

    (4)
    -----> Update model config file '/opt/awstats/wwwroot/cgi-bin/awstats.model.conf'
     File awstats.model.conf updated.

    -----> Need to create a new config file ?
    Do you want me to build a new AWStats config/profile
    file (required if first install) [y/N] ?

    創(chuàng)建一個(gè)新的配置文件,選擇y

    (5)
    -----> Define config file name to create
    What is the name of your web site or profile analysis ?
    Example: www.mysite.com
    Example: demo
    Your web site, virtual server or profile name:
    >

    輸入站點(diǎn)名稱,例如sina

    (6)
    -----> Define config file path
    In which directory do you plan to store your config file(s) ?
    Default: /etc/awstats
    Directory path to store config file(s) (Enter for default):
    >

    輸入AWStats配置文件存放路徑,一般直接回車則使用默認(rèn)路徑/etc/awstats

    (7)
    -----> Add update process inside a scheduler
    Sorry, configure.pl does not support automatic add to cron yet.
    You can do it manually by adding the following command to your cron:
    /opt/awstats/wwwroot/cgi-bin/awstats.pl -update -config=sina
    Or if you have several config files and prefer having only one command:
    /opt/awstats/tools/awstats_updateall.pl now
    Press ENTER to continue...

    按回車鍵繼續(xù)

    (8)
    A SIMPLE config file has been created: /opt/awstats/etc/awstats.sina.conf
    You should have a look inside to check and change manually main parameters.
    You can then manually update your statistics for 'sina' with command:
    > perl awstats.pl -update -config=sina
    You can also read your statistics for 'sina' with URL:
    > http://localhost/awstats/

    Press ENTER to finish...

    按回車鍵結(jié)束


    4、修改awstats.sina.conf配置
    vi /etc/awstats/awstats.sina.conf

    按?,在之后輸入要搜索的內(nèi)容LogFile="
    然后按Ins鍵,找到LogFile="/var/log/httpd/access_log"
    改為要分析的Apache日志路徑與文件名。

    (1)多日志合并分析(例:新浪播客其中兩臺(tái)服務(wù)器2月6日的日志30.0206.vblog.log與31.0206.vblog.log)
    LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/30.0206.vblog.log /var/apachelogs/31.0206.vblog.log|"

    LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/*.0206.vblog.log|"

    (2)分析使用gzip壓縮過的日志文件
    LogFile="gzip -d </var/log/apache/access.log.gz|"


    5、更新分析報(bào)告
    perl /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=sina -update


    在實(shí)踐過程中,確實(shí)有該問題,只要?jiǎng)h除掉歷史日志記錄即可
    如果出現(xiàn)以下錯(cuò)誤提示,很大可能是Apache的Log文件中存在以前CustomLog /yourlogpath/yourlogfile common生成的日志,刪除掉這些行的日志即可:
    This means each line in your web server log file need to have "combined log format" like this:
    111.22.33.44 - - [10/Jan/2001:02:14:14 +0200] "GET / HTTP/1.1" 200 1234 "http://www.fromserver.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"

    6、查看分析報(bào)告
    http://localhost/awstats/awstats.pl?config=sina

    這里的sina對(duì)應(yīng)/etc/awstats/awstats.sina.conf中的sina

    7.awstats自動(dòng)生成日志分析報(bào)告

    需要root用戶權(quán)限,或者可以操作crontab -e命令的用戶權(quán)限:

    (1)鍵入:crontab -e

    (2)輸入以下系統(tǒng)定時(shí)任務(wù):

    0 5 * * *  /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=www.google.com -update

    每天凌晨5點(diǎn)執(zhí)行日志分析報(bào)告,opt/awstats/wwwroot/cgi-bin/awstats.pl為awstats安裝目錄下的perl命令,www.goolge.com為你安裝awstats時(shí)指定的網(wǎng)站域名。關(guān)于crontab命令的用法,可以google一下。

    8.awstats基礎(chǔ)安全設(shè)置

    (1)linux系統(tǒng)中必須存在用戶,如果不存在可以按以下方式操作

    groupadd awsuser     #增加awstats用戶組

    useradd -g awsuser awstats #增加awstats用戶,并歸屬awsuser用戶組

    (2)在apache安裝目錄下新建文件夾

    mkdir passwd

    (3)運(yùn)行如下代碼產(chǎn)生用戶名為awstats用戶及其密碼

    opt/apache/bin/htpasswd -c /opt/apache/passwd/passwords awstats

    鍵入密碼和驗(yàn)證密碼即可

    (4)配置httpd.conf

    <Directory "/opt/awstats-6.9/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/local/apache2/password/passwords Require user awsspring </Directory>




    附:
    (2)測(cè)試環(huán)境:在DELL PowerEdge 1950/2950 服務(wù)器+red hat as 4.6/5.0 as Linux操作系統(tǒng)+Apache 2.2.11下測(cè)試通過。

    posted @ 2009-04-08 16:54 雪地孤鴻 閱讀(1145) | 評(píng)論 (0)編輯 收藏
    1 . WDG HTML Validator 一個(gè)很好的工具,能找出網(wǎng)站語(yǔ)法錯(cuò)誤的地方,并標(biāo)注出來,也可選擇對(duì)網(wǎng)站上單獨(dú)的每一頁(yè)進(jìn)行單頁(yè)分析。( 強(qiáng)烈推薦

    2 . W3C Markup Validation Service 對(duì) HTML 和 XHTML 都能進(jìn)行代碼測(cè)試,自稱是互聯(lián)網(wǎng)絡(luò)上第一個(gè)(也是使用者最多的)的 HTML 驗(yàn)證工具。

    3 . W3C CSS Validation Service 用于驗(yàn)證 css 源代碼,能夠標(biāo)注出不好的 css 代碼設(shè)計(jì)。例如:“Same colors for color and background-color in two contexts”。

    4 . RUWF XML Syntax Checker 用于查找 XML 文件的錯(cuò)誤。

    5 . W3C Feed Validation Service 用于查找 Atom 和 RSS feed 中的錯(cuò)誤語(yǔ)法。( 這個(gè)我經(jīng)常用到

    6 . W3C Link Checker 用于搜尋查明你網(wǎng)站內(nèi)的所有鏈接里是否有斷鏈。( 強(qiáng)烈推薦

    7 . Juicy Studio Link Analyser 測(cè)試網(wǎng)站內(nèi)的鏈接的 URL 是否存在死鏈,與 W3C Link Checker 很類似。

    網(wǎng)站的使用性

    我們常常看到網(wǎng)站設(shè)計(jì)者把重點(diǎn)放在怎網(wǎng)站的吸引力上,而完全不考慮會(huì)不會(huì)影響來訪者的使用,一個(gè)瀏覽難度很大的網(wǎng)頁(yè)是注定要失敗,要讓你的來訪者方便的得到他要的信息(從而成為重復(fù)訪客),你的網(wǎng)站應(yīng)當(dāng)遵循 WCAG section 508 易用性規(guī)則。

    8 . Watchfire WebXACT 所有嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì)師和開發(fā)者都必須使用的工具,它會(huì)生成一個(gè)非常詳盡的報(bào)告書,包括:網(wǎng)站質(zhì)量,易用性和隱私等。( 強(qiáng)烈推薦

    9 . ATRC Web Accessibility Checker 測(cè)試網(wǎng)站的 WCAG 2.0 Level2 兼容性,它會(huì)生成一份報(bào)告,提出一系列建議,如:如何提升頁(yè)頭,鏈接,數(shù)據(jù),圖表和文字的訪問速度。

    10 . WAVE 3.0 Web Accessibility Tool 高度可定制的工具,它采用了圖形化模型展示網(wǎng)站兼容性問題( WCAG 1.0 and section 508 )。( 強(qiáng)烈推薦

    11 . TAW Web Accessibility Test 測(cè)試網(wǎng)頁(yè)是否存在沖突( WCAG 1.0 兼容性 ),通過圖形模式生成一份依據(jù) wcag 優(yōu)先模式為基礎(chǔ)的網(wǎng)站修改建議。

    12 . HiSoftware CynthiaSays portal 采用了非常嚴(yán)格的規(guī)則來測(cè)試網(wǎng)頁(yè)( 根據(jù) section 508 和 WCAG 1.0 規(guī)則 ),生成的報(bào)告也極為詳細(xì)( 詳細(xì)到很難看懂 )。

    13 . HERA Accessibility testing with Style 使用一種極為復(fù)雜但容易理解方式指出網(wǎng)頁(yè)的 wcag1.0 兼容性問題。

    14 . Juicy Studio CSS Analyser 進(jìn)行了色彩對(duì)比測(cè)試,以確保你的網(wǎng)站的色調(diào)會(huì)符合 WCAG 1.0 的要求。

    15 . Juiciy Studio Readability Test 分析你網(wǎng)站上的文字是否有語(yǔ)法錯(cuò)誤或拼寫錯(cuò)誤等問題,容易讓人理解不( 根據(jù) the Flesch Reading Ease 和 Flesch-Kincaid grade level algorithms 規(guī)則 )。( 適合英文網(wǎng)站使用 )

    網(wǎng)站的速度

    打開你的網(wǎng)站的速度快慢,是來訪者會(huì)不會(huì)再次訪問網(wǎng)站的關(guān)鍵因素,在一般情況下,一個(gè)網(wǎng)絡(luò)不是很快的來訪者是不愿意訪問一個(gè)充滿著圖片、flash 動(dòng)畫、多媒體文件的網(wǎng)站。為了使你的網(wǎng)站覆蓋人群的范圍最大化,你必須優(yōu)化你的網(wǎng)站,使它的打開速度盡可能的快。

    16 . Web Page Analyzer from Website Optimization 一個(gè)很好的工具,它在分析完一個(gè)網(wǎng)頁(yè)后,會(huì)為減少加載時(shí)間提出優(yōu)化建議,著重優(yōu)化物體的數(shù)目,圖片和網(wǎng)站的總體大小。( 強(qiáng)烈推薦

    17 . WebSitePulse Test Tools 有一系列的工具來確定網(wǎng)站的加載速度和主機(jī)信息。

    18 . Internet Supervision Url Check 從世界各地不同的服務(wù)器來測(cè)試你的網(wǎng)站的加載時(shí)間,用于確定是不是各地的來訪者都能順利快速的打開你得網(wǎng)站。

    瀏覽器模擬工具

    這是一個(gè)普遍的問題,因?yàn)楝F(xiàn)在有著很多的操作系統(tǒng)和瀏覽器,你得網(wǎng)站必須得兼容它們,但這絕不是一件容易的事。通過下列工具,你可以了解你得網(wǎng)站在各種瀏覽器上的顯示效果。

    19 . Browsershots能給出你的網(wǎng)站在不同瀏覽器下顯示效果的截圖,包括:Firefox 和 Internet Explorer ( Windows)、Firefox 和 Safari ( Mac OS X )、Iceweasal 和 Konqueror ( Linux ),但是結(jié)果要在1 - 3 小時(shí)后才能出來。

    20 . IE NetRenderer 實(shí)時(shí)生成你的網(wǎng)站在 Internet Explorer 5.5 、6.0 和 7.0 下的截圖。

    21 . MobiReady Report 分析使用手機(jī)訪問網(wǎng)頁(yè)的兼容性問題,會(huì)生成一份詳細(xì)的報(bào)告,并提供了在兩種不同類型的手機(jī)瀏覽器上你得網(wǎng)站可能顯示的樣子。

    搜索引擎優(yōu)化 (SEO)

    一個(gè)網(wǎng)站,如果對(duì)搜索引擎有著比較好的友好度,一定會(huì)比較有競(jìng)爭(zhēng)力。

    22 . UrlTrends 會(huì)顯示網(wǎng)站的訪客是如何通過搜索引擎來到你的網(wǎng)站,還有各個(gè)流量是多少。這些數(shù)據(jù)是包括 Google, Yahoo, MSN, Alexa, AlltheWeb, AltaVista 和其他一些網(wǎng)站。( 強(qiáng)烈推薦

    23 . iWEBTOOL Backlink Checker 一個(gè)很好的工具,它能找出有什么站點(diǎn)鏈接到你的站點(diǎn),那些站點(diǎn)是什么類型的站點(diǎn)。

    24 . iWEBTOOL Multi-Rank Checker 顯示你網(wǎng)站的 Alexa 和 Google PageRank 數(shù)值。

    25 . Microsoft adCenter Labs: Advertising and Keyword Research Tools 一個(gè)極好的工具,用于分析和預(yù)測(cè)你網(wǎng)站的來訪者和市場(chǎng)。( 強(qiáng)烈推薦

    26 . Domain Tools Whois lookup 一個(gè) WHOIS 網(wǎng)絡(luò)工具。

    27 . SEO-Browser 可以讓你看到在搜索引擎眼里一樣的網(wǎng)站( 去掉所有的”美麗”配件 )。

    28 . SEO Workers SEO Analysis Tool 非常有用的工具,分析了網(wǎng)站上的各種分類特征,包括 meta 標(biāo)簽、關(guān)鍵字密度及加載時(shí)間。( 強(qiáng)烈推薦

    29 . Seekport Seekbot 可以分析網(wǎng)站的數(shù)據(jù)和內(nèi)容,以得出搜索引擎會(huì)如何有效的解釋分析的網(wǎng)站。

    30 . SEO Chat SEO Tools 用以分析網(wǎng)站 Google adsense 盈利潛力,關(guān)鍵字密度,Meta tag 等等……

    31 . Marketleap Search Engine Marketing Tools 用來分析網(wǎng)頁(yè),讓你知道你的網(wǎng)站檢索、設(shè)定的關(guān)鍵字好不好。

    原文:avivadirectory.com
    譯者:peterzsk
    譯文原地址:http://zsk.akaka.com.cn/2007/06/31-free-tests-online/
    采用CC創(chuàng)作共用協(xié)議,轉(zhuǎn)載可保留以上信息并<署名、非商業(yè)和保持一致>。

    posted @ 2009-02-18 15:57 雪地孤鴻 閱讀(262) | 評(píng)論 (0)編輯 收藏
    opencrx的大名,我就不介紹了,請(qǐng)參考www.opencrx.com(官方網(wǎng)站)或www.opencrx.com.cn(中文網(wǎng)站),我使用的是opencrx2.1,關(guān)于opencrx的安裝過程,無論是windows還是linux的安裝過程也不需要多說了,官方網(wǎng)站有很好的安裝說明文檔,圖文并茂,很是生動(dòng),幾乎太會(huì)不會(huì)安裝的了:),但是在啟動(dòng)的過程中,出現(xiàn)了一點(diǎn)小插曲,讓我折騰了將近2個(gè)小時(shí)。下面就詳細(xì)說明一下:
    一、在windows下安裝完成openmdxTomcatLwc-2.1.0和opencrx2.1.0之后,桌面上會(huì)出現(xiàn)五個(gè)快捷方式,雙擊那個(gè)都不會(huì)正常的啟動(dòng)opencrx-server  的?關(guān)鍵是hsql會(huì)出現(xiàn)錯(cuò)誤,他們需要組合使用才是有效的:),先啟動(dòng)Start Services for Tomcat+LWC 2.1.0 (8080)(雙擊該圖標(biāo)即可)啟動(dòng)openmdx service服務(wù);然后在雙擊openCRX Server HSQLDB Console (9001)圖標(biāo),啟動(dòng)hsql內(nèi)存數(shù)據(jù)庫(kù),接著雙擊Start Tomcat+LWC 2.1.0 (8080)圖標(biāo),啟動(dòng)opencrx-server服務(wù),到此為止,如果沒有看到任何異常,那就恭喜你了,服務(wù)完全啟動(dòng)成功了!!!!還有兩個(gè)圖標(biāo),一個(gè)是Login Tomcat+LWC 2.1.0 (8080),這個(gè)就是訪問opencrx-server的登錄頁(yè)面的快捷方式而已,你在ie中輸入地址也是可以的,另外一個(gè)就Stop Tomcat+LWC 2.1.0 (8080),停止所有的web服務(wù)(openmdx-service和opencrx-server),最后的hsql服務(wù)需要手工停止。
       啟動(dòng)時(shí)需要組合拳,但是停止確實(shí)一鍵搞定,太讓人郁悶了:(

    二、在Linux下,安裝過程可能并不向官方文檔描述的那樣,我們大部分所使用的linux應(yīng)該是不太會(huì)支持圖形界面的,但是官方的安裝文檔給出的是有圖形界面的,和window下極其相似,不過也沒有關(guān)系,只要是使用過linux(入門級(jí)即可)的應(yīng)該都可以根據(jù)提示完成安裝。不過在官方文檔的最后,在啟動(dòng)opencrx-server的描述中,給出了一句極具誤導(dǎo)性的話“Start Tomcat to start the openCRX Server”,也有可能是偶的e文不好的原因,反正我是理解為啟動(dòng)tomcat即可了。后經(jīng)驗(yàn)證,其實(shí)是需要通過"/installdir/opencrx2.1/bin/control.sh START"命令來啟動(dòng)才可以。注意control.sh的參數(shù)“START”.linux下面的啟動(dòng)過程比windows下稍微有好一點(diǎn):)


    好了,今天基本就這樣了,后面在慢慢研究opencrx吧,希望有興趣的朋友一起:)

    posted @ 2008-07-26 17:00 雪地孤鴻 閱讀(4325) | 評(píng)論 (2)編輯 收藏
    關(guān)于JForum論壇的基本情況就不在此介紹了,官方網(wǎng)址:www.jforum.net.jforum論壇系統(tǒng)的安裝也很簡(jiǎn)單,按照官方文檔,或者google一下,基本都可以搞定,在此就不在介紹了。大概描述一下我使用jforum的情況:
    1.應(yīng)用服務(wù)器:weblogic8.1
    2.數(shù)據(jù)庫(kù):oracle10g
    3.已有一個(gè)電子商務(wù)網(wǎng)站,需要和jforum進(jìn)行簡(jiǎn)單的集成,提供sso(單點(diǎn)登錄的功能)。
    4.說明:已有的電子商務(wù)網(wǎng)站域名:http://www.123.com jforum域名:www.123.com/forum,電子商務(wù)網(wǎng)站和jfroum在統(tǒng)一臺(tái)服務(wù)器和同一應(yīng)用服務(wù)器下,如果分開可能會(huì)存在session或cookie訪問的問題。
    5.JForum版本:2.1.8
    下面簡(jiǎn)要的介紹一下使用cookie進(jìn)行jforum和電子商務(wù)網(wǎng)站的sso集成的過程:
    (1)實(shí)現(xiàn)net.jforum.sso接口
    public class CookieUserSSO implements SSO {
        static final Logger  logger       = Logger.getLogger(CookieUserSSO.class.getName());

        public String authenticateUser(RequestContext request) {
            // login cookie set by my web LOGIN application
            Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals
                    .getValue(ConfigKeys.COOKIE_NAME_USER));
            String username = null;

            if (cookieNameUser != null) {
                username = cookieNameUser.getValue();
            }
            logger.info("cookie username="+username);
            System.out.println("cookie username="+username);
            return username; // return username for jforum
            // jforum will use this name to regist database or set in HttpSession
        }

        public boolean isSessionValid(UserSession userSession,
                RequestContext request) {
            Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals
                    .getValue(ConfigKeys.COOKIE_NAME_USER)); // user cookie
            String remoteUser = null;

            if (cookieNameUser != null) {
                remoteUser = cookieNameUser.getValue(); // jforum username
            }

            if (remoteUser == null
                    && userSession.getUserId() != SystemGlobals
                            .getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {
                // user has since logged out
                return false;
            } else if (remoteUser != null
                    && userSession.getUserId() == SystemGlobals
                            .getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {
                // anonymous user has logged in
                return false;
            } else if (remoteUser != null
                    && !remoteUser.equals(userSession.getUsername())) {
                // not the same user (cookie and session)
                return false;
            }       
            return true; // myapp user and forum user the same. valid user.
        }

    }
    (2)修改SystemGlobals.properties中的配置:
        修改
    SystemGlobals.properties文件中的一下屬性的內(nèi)容:
        authentication.type = sso
        sso.implementation = net.jforum.sso.CookieUserSSO
        sso.redirect = http://www.123.com/login.jsp //可根據(jù)實(shí)際的登錄頁(yè)面地址進(jìn)行修改

        cookie.name.user = 123UserInfo //電子商務(wù)網(wǎng)站中保存的cookie名稱,可根據(jù)實(shí)際情況修改

    (3)修改web應(yīng)用中的登錄和注銷部分的邏輯:
        登錄部分加入以下代碼:
       
    ...
        Cookie cookie = new Cookie("springTourUserInfo", sname);
         cookie.setMaxAge(-1);
         cookie.setPath("/");//cookie只在同一應(yīng)用服務(wù)器有效
         response.addCookie(cookie);

       ...
        注銷部分加入以下代碼:
        ......
          Cookie cookie = new Cookie("springTourUserInfo", "");
          cookie.setMaxAge(0); // delete the cookie.
          cookie.setPath("/");
          response.addCookie(cookie);

        ......
    (4)在電子商務(wù)網(wǎng)站增加論壇的鏈接:
        <a href="/forum">論壇</a>

    基本配置完整,測(cè)試通過,如有問題,歡迎交流!

    感謝網(wǎng)友提供的資料:
    http://www.lifevv.com/java/doc/20080305224358885.html?page=0
    http://www.99inf.net/SoftwareDev/Java/54230.htm(作者:王保政)


       

    posted @ 2008-06-26 16:54 雪地孤鴻 閱讀(4035) | 評(píng)論 (3)編輯 收藏
    假設(shè)有webapp1, webapp2, cas server,webapp1, webapp2均受cas server保護(hù)
    首先,我在這里簡(jiǎn)單解釋一下:
    第1種不能logout的情況:
    1)登錄了WebApp1,redirect到caserver
    casserver認(rèn)證后,再redirect到webapp1,ok!
    2)http方式 lougout casserver1,即http://yale_casserver:8080/cas/lougout
    顯示logout成功
    3)訪問webapp2,還能訪問!
    這是非常正常的一種情況,因?yàn)槟悴煌ㄟ^https來注銷,casserver怎么"殺"掉
    它通過https發(fā)給你的TGC Cookie?

    第2種不能logout的情況:
    1)登錄了WebApp1,redirect到caserver
    casserver認(rèn)證后,再redirect到webapp1,ok!
    2)https方式 lougout casserver1,即https://yale_casserver:8443/cas/lougout
    顯示logout成功
    3)訪問webapp1,還能訪問!訪問webapp2,不能訪問,重定向到casserver要求登錄!
    這也是非常正常的一種情況,因?yàn)槟阋呀?jīng)能夠訪問,你繼續(xù)可以繼續(xù)訪問,
    CASLogout不能阻止你訪問webapp1,它只能阻止你訪問webapp2,因?yàn)槟阋呀?jīng)
    被允許訪問webapp1,而webapp2則還沒有,如果你在(1)的時(shí)候,順帶也訪問
    webapp2,那么你的注銷將毫無作用了,CAS無法阻止你訪問這兩個(gè)webapp,
    因?yàn)槟阌蠸ervice Ticket。

    如果你對(duì)此費(fèi)解,那時(shí)因?yàn)槟阋褳長(zhǎng)ogout就是退出系統(tǒng),那我只能表示遺憾,
    因?yàn)镃AS Logout的作用不是這樣,它的作用是阻止你繼續(xù)通過TGC(它簡(jiǎn)單地
    清楚了IE的TGC Cookie)來獲取ST,阻止你獲取通向其他web應(yīng)用的Ticket。

    所以,用完webapp1的時(shí)候,注銷,然后再關(guān)閉掉IE就徹底Logout了。
     

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1503551
    posted @ 2008-03-28 16:16 雪地孤鴻 閱讀(882) | 評(píng)論 (0)編輯 收藏
    今天花了一個(gè)下午的時(shí)間,終于完成的cas配置的一次完整的運(yùn)行。cas前世今生我就不介紹了,有興趣的朋友谷歌或是百度一下就可以有很詳細(xì)的了解了,重點(diǎn)記錄一下今天的配置過程和遇到的問題及解決方法。
    環(huán)境:瀏覽器(ie6.0,windows xp)
        cas server 在一臺(tái)Linux服務(wù)器,cas client在另外一臺(tái)linux服務(wù)器
        應(yīng)用服務(wù)器為tomcat5.5.26
    初步的配置實(shí)用過程參考了http://m.tkk7.com/yida/archive/2007/04/03/55466.html的描述,各位亦可以訪問阿木的blog。整理如下:
    1.請(qǐng)下載到cas的官方網(wǎng)站下載cas-server(我用的是3.2)和cas-client(2.0.11),tomcat5.5.26
        cas的官方網(wǎng)站:http://www.ja-sig.org/products/cas/
    2.安裝cas-server,我們假定安裝cas-server的服務(wù)器為server1
        (1)請(qǐng)?jiān)趕erver1服務(wù)器上安裝好jdk1.5或以上版本的jdk,tomcat5.5.26,并配置環(huán)境變量JAVA_HOME
        (2)將cas-server-3.2-release.zip解壓,將moudels目錄下cas-server-webapp-3.2.war拷貝到tomcat的webapps目錄下,修        改名稱為cas.war.
        (3)生成server1的安全證書:
          
    keytool -genkey -alias my-alias-name -keyalg RSA -keystore keystore-file
           (4)在server1
    配置https
                 在
    $CATALINA_HOME/conf/server.xml里修改為一下配置
                  <Connector port="8443" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" disableUploadTimeout="true"
                   acceptCount="100" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS"
                   keystoreFile="/path/keystore-file" keystorePass="your-password"
                  />
              (5)導(dǎo)出server1的證書,
    用來給所有需要用到的客戶端導(dǎo)入
                   
    keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file
             
    (6)將導(dǎo)出的證書上傳的client1服務(wù)器上。
              (7)啟動(dòng)server1上的tomcat,檢驗(yàn)cas配置是否成功,訪問http://ip:8443/cas/login,如果能看到cas的登錄頁(yè)面則表示配                置成功。
    3.配置 cas-client,我們以tomcat下自帶的servlet-example為例子進(jìn)行說明
        (1)
    請(qǐng)?jiān)赾lient1服務(wù)器上安裝好jdk1.5或以上版本的jdk,tomcat5.5.26,并配置環(huán)境變量JAVA_HOME
      (2)
    將cas-client-2.0.11.zip解壓,把java/lib/casclient.jar拷貝到client1服務(wù)器上的
                webapps/servlets-examples/WEB-INF/lib目錄下(如果沒有就建一個(gè))

      (3)在要使用CAS的客戶端client1里設(shè)置(以servlets-examples這個(gè)APP為例),我們使用ServletFilter(CAS client里提供            的)來實(shí)現(xiàn)SSO的檢查,修改servlets-examples/WEB-INF/web.xml,添加以下內(nèi)容:
              <filter>
                    <filter-name>CASFilter</filter-name>
                    <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
                    <init-param>
                        <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
                         <param-value>https://your.cas.server.name(eg:server1):port/cas/login</param-value>
                    </init-param>
                    <init-param>
                        <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
                        <param-value>https://your.cas.server.name(eg:server1):port/cas/proxyValidate</param-value>
                    </init-param>
                    <init-param>
                        <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
                        <param-value>your.client.server.name(eg:client1):port</param-value>
                    </init-param>
                </filter>
                <filter-mapping>
                    <filter-name>CASFilter</filter-name>
                        <url-pattern>/servlet/*</url-pattern>
                </filter-mapping>
           (4)
    在客戶端的JVM里導(dǎo)入信任的SERVER的證書(根據(jù)情況有可能需要管理員權(quán)限)
                
    keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias my-alias-name
                 此時(shí)需要輸入密碼,默認(rèn)密碼為changeit
    通過以上配置,基本完成cas-server和cas-client的配置,但是還有以下問題需要注意和解決
    由于cas的證書需要域名才能正確的進(jìn)行認(rèn)證信息的交互,不支持ip,如果server和client在同一臺(tái)機(jī)器上,可以使用localhost,如果像我們上面描述的三臺(tái)服務(wù)器這樣的環(huán)境,使用localhost或者ip是不能正常運(yùn)行的。如果使用ip,運(yùn)行時(shí)會(huì)拋出
    HTTPS hostname wrong 的錯(cuò)誤,解決的方法如下:
    假設(shè)server1的ip為:192.168.10.1,client1的ip為192.168.10.2,開發(fā)機(jī)器(xp)的ip為:192.168.10.3
    在server1和client1上設(shè)置本機(jī)的域名映射:
    vi /etc/hosts 添加以下行
    192.168.10.1 cas.server
    在開發(fā)機(jī)器(xp)下,在C:\WINDOWS\system32\drivers\etc目錄下,編輯hosts文件,添加以下行
    192.168.10.1 cas.server

    重新生成cas-sever的服務(wù)器端的證書,在開始問“你的名字”或“DName”的時(shí)候,必須填寫你服務(wù)器所在域名(cas.server)
    然后重新到處服務(wù)器器端的證書,并將其導(dǎo)入到client1服務(wù)器的jvm

    最后修改
    修改servlets-examples/WEB-INF/web.xml中關(guān)于cas過濾器的配置:請(qǐng)將your.cas.server.name(eg:server1)修改為cas.server即可。重新啟動(dòng)server1和client1的服務(wù)器上的tomcat就可正常運(yùn)行。


    ttp://client1:8080/servlets-examples/servlet/HelloWorldExample
    系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到一個(gè)驗(yàn)證頁(yè)面,隨便輸入一個(gè)相同的賬號(hào),密碼,嚴(yán)正通過之后就會(huì)訪問
    到真正的HelloWorldExample這個(gè)servlet了


    posted @ 2008-03-25 18:05 雪地孤鴻 閱讀(4731) | 評(píng)論 (0)編輯 收藏
    使用jbossTools創(chuàng)建seam website項(xiàng)目的注意事項(xiàng),由于seam2.0本身標(biāo)榜的口號(hào)是“企業(yè)級(jí)的java應(yīng)用程序框框架”,關(guān)鍵的賣點(diǎn)是“JSF和ejb3.0的深度集成”,所以使用jbossTools工具生成項(xiàng)目結(jié)構(gòu)是,也就天然的對(duì)ejb3.0的支持較好,但是如果不使用實(shí)體bean之類的東東,就需要對(duì)生成的項(xiàng)目的進(jìn)行適當(dāng)?shù)男薷牟趴梢哉5倪\(yùn)行。我想這是jbossTools或是seam框架本身需要改進(jìn)的地方,jbossTools向?qū)Р荒芨鶕?jù)客戶的需求很好的定制生成項(xiàng)目框架,表現(xiàn)的很不友好,對(duì)于初學(xué)者來說,很容易產(chǎn)生混淆。經(jīng)過將近兩天的測(cè)試,現(xiàn)總結(jié)如下(以seam2.0的example中hibernate2為例):
    1.重建為jboss4.2下的seam2.0+hibernate項(xiàng)目:
    需要注意的是:1.通過jbosstools工具生成的項(xiàng)目下面仍然會(huì)有“persistence.xml”這個(gè)文件存在,如果發(fā)布到j(luò)boss應(yīng)用服務(wù)器下,仍然會(huì)導(dǎo)致jboss在啟動(dòng)時(shí)通過該文件進(jìn)行相關(guān)的數(shù)據(jù)庫(kù)連接。2.通過jbossTools生成的項(xiàng)目框架,都會(huì)默認(rèn)的生成<項(xiàng)目名稱>-ds.xml文件,如果需要使用該文件,需要單獨(dú)發(fā)布,如果不需要,則要修改hibernate-cfg.xml文件的配置信息。
    2.重建為tomcat6.0下的seam2.0+hibernate項(xiàng)目:
    1.通過jbossTools無法之間在tomcat5.×下建立下項(xiàng)目框架,由于jsf1.2,seam1.2或seam2.0均需要serlet2.5,如果需要在tomcat5.×下創(chuàng)建項(xiàng)目,則只能進(jìn)行手工配置。
    2.在tomcat創(chuàng)建seam website項(xiàng)目,通過jbossTools無法創(chuàng)建完整的項(xiàng)目,相關(guān)的第三方包,需要從seam2.0的發(fā)布包中手動(dòng)copy到當(dāng)前下項(xiàng)目的classpath下(/WEB-INF/lib),主要的第三方包包括:
    commons-*.jar,jsf-api.jar,jsf-impl.jar,jstl.jar,dom4j.jar,hibernate.jar,hibernate-commons-annotations.jar,hibernate-annotations.jar,hibernate-entitymanager.jar,hibernate-validator.jar,javassist.jar,persistence-api.jar,cglib.jar,jta.jar,antlr.jar
    3.數(shù)據(jù)源也需要手動(dòng)配置,如果配置為tomcat的jndi,請(qǐng)參考tomcat的相關(guān)文檔。
    4.注意修改src/action和src/module源文件編譯的輸出路徑到/WEB-INF/classes目錄下,否則項(xiàng)目發(fā)布后可能會(huì)找到相關(guān)類路徑的錯(cuò)誤。
    5.其他有jbossTools生成的無關(guān)文件可以刪除。

    在jboss4.2和tomcat6.0下通過jbossTools創(chuàng)建seam website項(xiàng)目框架需要注意的,暫時(shí)總結(jié)如上。本blog將持續(xù)更新有關(guān)seam2.0的學(xué)習(xí)心得。

    歡迎交流!




    posted @ 2008-03-17 14:16 雪地孤鴻 閱讀(1740) | 評(píng)論 (3)編輯 收藏
    同樣,經(jīng)過不斷的摸索和網(wǎng)友的幫助,終于搞定了:),主要的問題還是出在我的服務(wù)器上的原因,不知道為什么,我的服務(wù)器上部署了sqlite3.0導(dǎo)致apache2.2.6始終無法運(yùn)行,總是提示找不到"libsqlite3.so.0",不得以,只能換臺(tái)服務(wù)器測(cè)試,輕松搞定,現(xiàn)將過程描述如下,一共參考:
    一.安裝apache2.2.6
        1.    tar fvxz httpd-2.2.2.tar.gz
        2.    進(jìn)入解壓后的目錄。進(jìn)行配置:
              ./configure --prefix=/usr/apache --enable-module=so --enable-proxy --enable-proxy-ajp --enable-forward         --enable-proxy-connect --enable-proxy-http --enable-so --enable-deflate --enable-headers --enable-include
        解釋:
              -- prefix=/usr/apache是配置將要安裝到的目錄位置;
              --enable-module=so配置Apache支持Dynamic Shared Objects (DSO)模式;
              --enable-* 配置添加相應(yīng)的模塊;
        3.    編譯(編譯如果不成功,確認(rèn)一下你的linux是否安裝有編譯所需要的c環(huán)境和其他需要的類庫(kù)):
               make
        4.    安裝:
                make install
        5.    編輯/usr/apache/conf/httpd.conf文件,把端口改為80(別跟tomcat的端口沖突):
               ServerName:80
    二、安裝tomcat5.5.17
        直接解壓壓縮包到指定目錄就可以,再次就不多少說了(當(dāng)然,最好在進(jìn)行以上兩項(xiàng)操作前先按裝好jdk,1.5或以上版本)
    三、簡(jiǎn)單的apche2.2.6+tomcat5.5.17配置說明:
        使用
    使用proxy_ajp整合apache和tomcat,由于Apache2.2對(duì)以往版本有較大改動(dòng),引進(jìn)了proxy 模塊,所以Apache2.2和Tomcat5.5的配置需要用到mod_proxy.so等文件(不再使用jk 或 jk2 等tomcat連接器) .基本配置如下:
    (一)加載解析模塊
        windows下,或linux采用動(dòng)態(tài)加載(DSO)模式下需配置。前面我們的linux編譯時(shí)把下面的模塊嵌入到了    apache中,所以不用再加載,因此下面的兩行也不用再httpd.conf文件中添加了
            LoadModule proxy_module modules/mod_proxy.so
            LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    (二)使用proxy_ajp代理, 下面的配置,是把所有目錄全用代理
         使用vi編輯器打開apache的配置文件/conf/httpd.conf,在#LoadModule××××××行的后面添加         以下兩行即可:
            ProxyPass / ajp://127.0.0.1:8009/
            ProxyPassReverse / ajp://127.0.0.1:8009/
    (三)禁止使用proxy_ajp代理的目錄:
         如果對(duì)于某些目錄不想使用proxy_ajp代理轉(zhuǎn)發(fā),可以按照如下配置(配置方式同上面(二)的操         作):
          ProxyPass /images/ !      (禁止images目錄下的內(nèi)容使用proxy_ajp代理轉(zhuǎn)發(fā))
          配置到現(xiàn)在,重啟一下apache,就可通過apache來訪問tomcat的服務(wù)了。

    特別鳴謝:http://groups.csdn.net/Apache/topic/b70ad273-f66f-4699-83c0-e11d354d262a.aspx

    posted @ 2007-12-24 18:03 雪地孤鴻 閱讀(949) | 評(píng)論 (1)編輯 收藏

    exp user1/psw1@service1 owner=user1 file=d:\user_data_20060822.dmp log = d:\user_logout_20060822.log

    imp user2/psw2@service2 file=d:\user_data_20060822.dmp log =d:\user_login_20060822.log fromuser=user1 touser=user2 

    posted @ 2007-08-03 14:02 雪地孤鴻 閱讀(326) | 評(píng)論 (0)編輯 收藏
    現(xiàn)在安裝netbeans 5.5默認(rèn)的UI 語(yǔ)言為中文,如果需要修改為中文,只需在netbeans的安裝目錄中進(jìn)行適當(dāng)?shù)脑O(shè)置就可以了:
    1.進(jìn)入$netbeans/etc
    2.使用文本編輯器打開netbeans.conf.
    3.在“netbeans_default_options”項(xiàng)后添加“--locale language=en”。
    4.重啟netbeans即可見到e文的netbeans 的UI
    以上的設(shè)置在windows xp下測(cè)試通過,在linux的下的設(shè)置類似。
    posted @ 2007-07-15 15:17 雪地孤鴻 閱讀(1016) | 評(píng)論 (1)編輯 收藏
    在部署roller3.0的源代碼的時(shí)候,每次啟動(dòng)tomcat后訪問首頁(yè)的時(shí)候就報(bào)錯(cuò),提示找不到c.tld,但是standard.jar和jstl.jar都以放到lib目錄下了,郁悶之極,最后發(fā)現(xiàn)是因?yàn)樵趌ib下放了一個(gè)jsp-api.jar的包導(dǎo)致的
    ,只要將該包從lib下移除即可了,在此感謝網(wǎng)絡(luò)上不吝賜教的朋友們:)
    posted @ 2006-12-04 15:27 雪地孤鴻 閱讀(2302) | 評(píng)論 (3)編輯 收藏
    <2006年12月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(17)

    隨筆分類

    隨筆檔案

    文章檔案

    blog

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 日韩免费人妻AV无码专区蜜桃| 深夜a级毛片免费无码| 久久99热精品免费观看动漫| 亚洲日产韩国一二三四区| 亚州**色毛片免费观看| mm1313亚洲精品无码又大又粗| 羞羞视频免费网站入口| 亚洲精品国产日韩无码AV永久免费网| 深夜福利在线免费观看| 亚洲无线码在线一区观看| 人妻在线日韩免费视频| 亚洲国产精品lv| 51精品视频免费国产专区| 国产日本亚洲一区二区三区| 最近中文字幕mv免费高清电影 | 99蜜桃在线观看免费视频网站| 久久夜色精品国产亚洲AV动态图| 无码一区二区三区免费| 亚洲一区在线免费观看| 夜夜嘿视频免费看| 亚洲五月午夜免费在线视频| 亚洲AV无码乱码在线观看富二代| 99re热精品视频国产免费| 国产婷婷综合丁香亚洲欧洲| 国产大片51精品免费观看| 中文在线免费视频| 亚洲国产精品线观看不卡| 日韩高清在线免费看| www.av在线免费观看| 亚洲AV日韩AV天堂一区二区三区| 精品国产无限资源免费观看| 无码天堂va亚洲va在线va| 亚洲综合无码AV一区二区| 亚洲美女免费视频| 黄色免费网址大全| 中文字幕亚洲综合精品一区| 波多野结衣视频在线免费观看| 免费萌白酱国产一区二区三区| 亚洲av一本岛在线播放| 亚洲国产免费综合| 久久久久久精品成人免费图片|