posts - 37,  comments - 53,  trackbacks - 0
  2008年3月17日
grails应用以war包的方式发布到weblogic本来应该是没有什么问题的,也不需要像网上说的那样进行weblogic的配置,但是有两个小问题在实际的使用中需要注意:
1.我的应用中,使用了spring-security-cas的插件来实现cas client,但是不知道为什么在生产war包是,在web.xml中,有两个CAS Single Sign Out Filter的mapping,结果导致发布失败,需要手工删除一个(目前的解决办法)
2.grails的urlmapping插件,如果映射“/”到某个action,目前好像是不成功的,但是只要不是“/”,则没有这个问题。如果默认的根目录不是index.gsp,这个可能需要在访问“/”时进行跳转的处理。

posted @ 2011-02-09 16:21 雪地孤鸿 阅读(508) | 评论 (0)编辑 收藏
1.weblogic必须是10.3.4.0或以上版本,由于cas server采用了spring 2.5的版本,使用JPA2.0的原因,weblogic10.3.4之前的版本不支持jpa2.0
2.cas server webapp 如果以war的方式发布,会因为log4j.xml的问题而不能正常发布,具体原因还没有完全弄清楚,但是如果以解开后的文件夹目录的方式发布则没有问题。

posted @ 2011-02-09 16:16 雪地孤鸿 阅读(3239) | 评论 (2)编辑 收藏
测试环境下使用的是mysql数据库,切换到正式的oralce数据库中去发现cas server是无效的,主要的原因是由于数据库的差异导致的
认证用户的sql语句在mysql下为
select password from user_login where username=? and enabled=true
而在oracle下应该为
select password from user_login where username=? and enabled=1
主要由于oralce和mysql对boolean字段的处理不一致导致的。

posted @ 2011-01-26 09:05 雪地孤鸿 阅读(699) | 评论 (0)编辑 收藏

cas server logout后,默认是停留在cas的退出页面,一般我们需要重新转向到客户端网站的登录或是相关的页面,一般需要进行一下配置

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 雪地孤鸿 阅读(1032) | 评论 (1)编辑 收藏

经过将近两天的测试,参考众多网友的贡献,终于完成了对cas的主要配置和测试,现记录如下

基本需求:

1.cas server-3.4.5,casclient-3.2(官方版本),均可在cas官方网站下载,http://www.jasig.org

2.使用低成本的http协议进行传输,俺买不起ssl证书

3.通过jdbc进行用户验证

4.需要通过casserver提供除登录用户名以外的附加信息

参考资料:

1.cas官方网站的用户帮助手册和wiki

2.网友“城市猎人”的blog,http://yuzhwe.javaeye.com/blog/830143

3.网友“悟空悟道”的blog,http://llhdf.javaeye.com/blog/764385

4.其他网友贡献的相关的blog,都是通过google出来,就不一一列出了,一并致谢!!!

好了,下面进入正题,如果您不想测试中出现异常情况,或是获取不到相关数据,请关注文中的红色字体部分。

(1)使用http协议的设置,如果您也像我一样,买不起ssl数字证书,对安全的要求也不是特别的搞,下面的配置就可以帮助解决这个问题:

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

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

 (2)使用jdbc数据源进行用户认证,需要修改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只要用一个认证通过即可,建议将红色部分放在第一位,如果确认只用jdbc一种方式,其他认证方式均可删除。另外需要在在文件中添加datasoure和passordEncoder两个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数据库,应该加上后面的编码参数,否则可能导致客户端对TGT票据无法识别的问题
  </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默认支持MD5和SHA1两种编码方式,如果需要其他的编码方式例如SHA256,512等,可自行实现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>  

并添加对应数据库的jdbc的jar包。

(3)让cas server提供更多的用户数据共客户端使用

通过测试,由于cas的代码更新过程中的变化较大,所以包兼容的问题好像一直存在,在测试中我就碰到过,花费时间比较多,建议同学们在使用过程中使用官方的最新的发布版本。在我使用的这个版本中,请参考前面的关于server和client端的版本说明,应该没有包冲突的问题,测试通过。下面进行配置,配置文件:/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" >   //为认证过的用户的Principal添加属性
      <ref local="attributeRepository"/>
     </property> 
    </bean>
      <bean
     class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
   </list>
  </property>
 修改该文件中默认的 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"/><!-- 这里必须这么写,系统会自己匹配,貌似和where语句后面的用户名字段的拼写没有什么关系 -->
   </map>
  </property>
   <!-- 要获取的属性在这里配置 -->
  <property name="resultAttributeMapping">
   <map>
   <entry key="UId" value="userId" /> //key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值
   <entry key="ph" value="passwordHint" />   
   </map>
  </property>
</bean> 
备注:网上有很多的关于这个的配置,但是如果您使用的是我提供的版本或是高于这个版本,就应该象上面这样配置,无用质疑,网上大部分的配置都是基于
person-directory-impl,person-directory-api
1.1左右的版本,而最新的cas使用的是1.5的版本,经过查看源代码和api docs确定最新版本的属性参数如上配置。

修改该xml文件中最后一个默认的serviceRegistryDao bean中的属性全部注释掉,或者删除,
这个bean中的RegisteredServiceImpl的ignoreAttributes属性将决定是否添加attributes属性内容,默认为false:不添加,只有去掉这个配置,
cas server才会将获取的用户的附加属性添加到认证用的Principal的attributes中去,我在这里犯过这样的错误,最后还是通过跟踪源码才发现的。
<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="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<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 雪地孤鸿 阅读(15864) | 评论 (9)编辑 收藏
最近在使用G2G做项目,开发环境的数据库为Mysql,在使用grails的分页组件时没有任何问题,但是将数据库切换到ORACLE上就出现了问题,在分页的时候,记录总数是对了的,但在进行翻页的时候,总会有前一页的数据存在,而当前的数据总是显示不对,经过将近一天的仔细排查才找到问题的关键,主要是由于数据库的差异引起的,由于的我的查询不需要进行排序,所以在原来的查询结果中没有就排序语句,这就导致在mysql中完全正常的功能,到了oralce中每次查询的排序不一致,结果就导致在翻页的时候总有前一页的数据存在,可能是由于数据库的引擎规则的不一致导致的。
再次记下!

posted @ 2010-12-13 11:15 雪地孤鸿 阅读(706) | 评论 (0)编辑 收藏
   今天早上出来给老婆大人买早点,骑着老婆大人的小车,在路上奔驰,突然一种思绪飞入脑中,想想自己也是三十多岁的人了,却是一事无成。我本IT出生,参加工作以来,却一直徘徊在IT技术的和行业解决方案之间摇摆,最后终于下定决心朝着行业解决方案的方向发展,却选择了一个旅游行业,虽说春秋在国内也算的上不错的旅游公司,但这个行业确实乱象丛生。该公司在信息化方面更是不知所谓,早三暮四。虽然我不应该对公司说三道四,但还是忍不住要说两句。算了,这个都是我个人的抉择,我现在是IT技术方面没有什么看家的本事,行业知识也没有什么,长此以往,很是危险,随着年龄的增长,抗风险能力会越来月差,我必须要重新的思考和抉择,不然真的要落的老婆大人预见的场景了,我自己不甘心这样,也 不能让老婆看扁啊。行业的解决方案肯定是我的房展方向,是继续在这个行业发展,还是重新挑选行业,这是个比较重要的决定,但是不管怎么样,我的老本行--IT技术也支撑不了几年了,我必须要反省,深思我过去的规划和执行,重新规划和执行,努力的保障家庭幸福的经济基础,开拓新的事业。
今天在这里写下如此的只言片语,就是为了鞭策自己,不能让自己在被短期的利益而动摇长期的规划和执行,年纪也不小了,还没有一个像样的事业,以后的风险会越来越大。
posted @ 2010-05-03 10:35 雪地孤鸿| 编辑 收藏
最近在试用Grails进行开发一个小项目,需要使用oracle数据库,我使用的是Oracle 11g,简单的配置如下:
1.添加jdbc lib到Grails项目的lib中,我使用的是ojdcb6_g.jar
2.修改grails生成项目的DataSource.groovy文件中关于DataSource的相关配置:关键点是关于hibernate方言的配置,由于grails默认使用的是HSQL内存数据库,推荐使用的是mysql数据库;但是在使用oracle数据库时,需要配置hiernate的方言;其他的如URL,drive,username,password等配置和一般的配置没有什么区别,详细配置如下:
dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.OracleDriver"
    username = "paygateway"
    password = "paygateway"
    dialect = "org.hibernate.dialect.OracleDialect"
       
    logSql = true
}


posted @ 2010-03-19 13:38 雪地孤鸿 阅读(1992) | 评论 (1)编辑 收藏
公司刚刚买了一台Thinkpad R400(7445-A63),预装的vista home basic版本,由于第一次使用thinkpad系列,只是制作了一个start Recovery Disk盘,忘了制作系统恢复光盘,晕倒,不知道联想能否免费提供哦,那可是俺花银子买的阿。当时急着想试用一下win7(当然是盗版的),所以就把硬盘格掉了,后来想恢复的时候已经晚了,因为我没有win7的序列号,没有办法,只能重回xp时代了。
   由于硬盘是sata的,安装过程很是郁闷,开始都引导不了,后来狠狠的google一把,终于搞定了:
  1.进入BIOS-》CONIF,将硬盘的模式修改为compatibility,原来为ACHI
  2.到联想的官方网站,现在相关xp的驱动(http://think.lenovo.com.cn),网友提供列表如下;我是全部打包下载了:)
     安装主板芯片组驱动(Intel Chipset Drivers)
安装硬盘SATA驱动(Intel Matrix Storage Manager)
安装ACPI电源驱动,即Power Manager Driver
安装Lenovo System Interface Driver
启动系统,系统安装显卡驱动
安装网卡驱动
安装无线驱动
如果此系统安装为XP2的系统,那么要安装MODOM和声卡的前提是安装读卡器(也有人叫HD总线)补丁: KB888111XPSP2.EXE;
安装声卡驱动和补丁
安装猫驱动
安装蓝牙驱动
安装读卡器驱动
安装智能读卡器驱动
安装指纹驱动        
安装PCI简易通讯控制器,也就是AMT(INTEL的主动管理技术
安装TPM安全芯片的驱动程序
安装摄像头驱动和补丁:7yca02ww.exe,Q909667.rar。
安装微软双核补丁和其他补丁:KB896256.exe, KB936357.exe, schedulerupdater.exe。
安装UltraNav driver
安装UltraNav Utility

3.驱动安装完成后,重启机器,进入BIOS,将硬盘模式修改回原来的ACHI模式

4.不知到何时能用上正中的win7盗版,感觉还是不错,虽然我平时已经不太用win系统了。:)


posted @ 2009-12-20 11:25 雪地孤鸿 阅读(1547) | 评论 (2)编辑 收藏
ofbiz默认的数据库为derby,这个当然不能在生产环境中使用,而且也不方便调试和管理。虽然ofbiz也支持很多的开源数据库,例如mysql等,但是我们这里还是使用主流的数据库系统oracle 11g.详细的操作如下
1.更新JDBC驱动,将oracle最新的jdbc驱动copy到${ofbiz install dir}/framework/entity/lib/jdbc 目录下。
2.设置实体引擎( Entity Engine)的缺省数据库为oracle.在修改 ${ofbiz install dir}/framework/entity/config/entityengine.xml文件中修改配置:
   a.修改数据库连接参数:
     <datasource name="localoracle"
            helper-class="org.ofbiz.entity.datasource.GenericHelperDAO"
            schema-name="ofbiz" 你的数据库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为你的数据库SID
                jdbc-username="ofbiz"  用户名
                jdbc-password="ofbiz"  密码
                pool-minsize="2"
                pool-maxsize="250"/>
    </datasource>
  b. 修改实体引擎的数据库缺省配置如下:(将datasource-name的值设置为“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.补充:在进行以上配置时,请确保你已经存在ofbiz的数据库,实例,用户等都已创建好。
4. 初始化数据和导入:   
     ofbiz$ java -jar ofbiz.jar -install
通过以上命令即可进行数据库的初始化和初始数据的导入,这里包括了ofbiz自带的例子,应用的所有的数据表和初始化数据

5.问题:
在使用oracle数据库时,当前的版本可能会碰到ORA-01843:无效的月份的问题      

    以sys用户登陆并创建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;

注意对登陆用户名的判断必须大小写都要考虑.

另:ofbiz用户不能拥有dba的权限,同时ofbiz用户比需要有UNLIMITED TABLESPACE的权限,否则在创建数据表的时候会报“数据库空间不足”的错误,导致无法创建表。

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

今天就到这里吧,明天继续:) 
posted @ 2009-09-03 20:27 雪地孤鸿 阅读(2603) | 评论 (3)编辑 收藏
apache版本2.2
自带mod_deflate.so和mod_headers.so
如果没有这两个模块,那么你就需要手工编译并load这两个模块。
我是在虚拟主机下加入一下配置即可
<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官方网站这么说的:)

posted @ 2009-08-26 09:17 雪地孤鸿 阅读(185) | 评论 (0)编辑 收藏
今天发现linux服务器的/目录磁盘使用率为100%,操作如下
主要通过du -sh查找占用磁盘较多的目录
1.清除/var/log下的日志文件
2.清除/var/spool/mail下占用磁盘较多的邮件目录(我的服务上主要是root用户的邮件比较多导致的)

posted @ 2009-07-02 17:25 雪地孤鸿 阅读(4357) | 评论 (0)编辑 收藏

但是scim中文输入不了, 上网找解决方案,最后成功的方法:

sudo apt-get install scim-qtimm 安装scim的qt模块

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

启动opera,问题解决。


环境:

ubuntu9.0.4

opera9.6

测试成功

posted @ 2009-05-08 08:59 雪地孤鸿 阅读(273) | 评论 (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安装过程(以下内容引用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] ?

这时选择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):

第一次使用请输入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改为更详细的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] ?

创建一个新的配置文件,选择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:
>

输入站点名称,例如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配置文件存放路径,一般直接回车则使用默认路径/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...

按回车键继续

(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...

按回车键结束


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

按?,在之后输入要搜索的内容LogFile="
然后按Ins键,找到LogFile="/var/log/httpd/access_log"
改为要分析的Apache日志路径与文件名。

(1)多日志合并分析(例:新浪播客其中两台服务器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、更新分析报告
perl /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=sina -update


在实践过程中,确实有该问题,只要删除掉历史日志记录即可
如果出现以下错误提示,很大可能是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、查看分析报告
http://localhost/awstats/awstats.pl?config=sina

这里的sina对应/etc/awstats/awstats.sina.conf中的sina

7.awstats自动生成日志分析报告

需要root用户权限,或者可以操作crontab -e命令的用户权限:

(1)键入:crontab -e

(2)输入以下系统定时任务:

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

每天凌晨5点执行日志分析报告,opt/awstats/wwwroot/cgi-bin/awstats.pl为awstats安装目录下的perl命令,www.goolge.com为你安装awstats时指定的网站域名。关于crontab命令的用法,可以google一下。

8.awstats基础安全设置

(1)linux系统中必须存在用户,如果不存在可以按以下方式操作

groupadd awsuser     #增加awstats用户组

useradd -g awsuser awstats #增加awstats用户,并归属awsuser用户组

(2)在apache安装目录下新建文件夹

mkdir passwd

(3)运行如下代码产生用户名为awstats用户及其密码

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

键入密码和验证密码即可

(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)测试环境:在DELL PowerEdge 1950/2950 服务器+red hat as 4.6/5.0 as Linux操作系统+Apache 2.2.11下测试通过。

posted @ 2009-04-08 16:54 雪地孤鸿 阅读(1143) | 评论 (0)编辑 收藏
1 . WDG HTML Validator 一个很好的工具,能找出网站语法错误的地方,并标注出来,也可选择对网站上单独的每一页进行单页分析。( 强烈推荐

2 . W3C Markup Validation Service 对 HTML 和 XHTML 都能进行代码测试,自称是互联网络上第一个(也是使用者最多的)的 HTML 验证工具。

3 . W3C CSS Validation Service 用于验证 css 源代码,能够标注出不好的 css 代码设计。例如:“Same colors for color and background-color in two contexts”。

4 . RUWF XML Syntax Checker 用于查找 XML 文件的错误。

5 . W3C Feed Validation Service 用于查找 Atom 和 RSS feed 中的错误语法。( 这个我经常用到

6 . W3C Link Checker 用于搜寻查明你网站内的所有链接里是否有断链。( 强烈推荐

7 . Juicy Studio Link Analyser 测试网站内的链接的 URL 是否存在死链,与 W3C Link Checker 很类似。

网站的使用性

我们常常看到网站设计者把重点放在怎网站的吸引力上,而完全不考虑会不会影响来访者的使用,一个浏览难度很大的网页是注定要失败,要让你的来访者方便的得到他要的信息(从而成为重复访客),你的网站应当遵循 WCAG section 508 易用性规则。

8 . Watchfire WebXACT 所有严谨的设计师和开发者都必须使用的工具,它会生成一个非常详尽的报告书,包括:网站质量,易用性和隐私等。( 强烈推荐

9 . ATRC Web Accessibility Checker 测试网站的 WCAG 2.0 Level2 兼容性,它会生成一份报告,提出一系列建议,如:如何提升页头,链接,数据,图表和文字的访问速度。

10 . WAVE 3.0 Web Accessibility Tool 高度可定制的工具,它采用了图形化模型展示网站兼容性问题( WCAG 1.0 and section 508 )。( 强烈推荐

11 . TAW Web Accessibility Test 测试网页是否存在冲突( WCAG 1.0 兼容性 ),通过图形模式生成一份依据 wcag 优先模式为基础的网站修改建议。

12 . HiSoftware CynthiaSays portal 采用了非常严格的规则来测试网页( 根据 section 508 和 WCAG 1.0 规则 ),生成的报告也极为详细( 详细到很难看懂 )。

13 . HERA Accessibility testing with Style 使用一种极为复杂但容易理解方式指出网页的 wcag1.0 兼容性问题。

14 . Juicy Studio CSS Analyser 进行了色彩对比测试,以确保你的网站的色调会符合 WCAG 1.0 的要求。

15 . Juiciy Studio Readability Test 分析你网站上的文字是否有语法错误或拼写错误等问题,容易让人理解不( 根据 the Flesch Reading Ease 和 Flesch-Kincaid grade level algorithms 规则 )。( 适合英文网站使用 )

网站的速度

打开你的网站的速度快慢,是来访者会不会再次访问网站的关键因素,在一般情况下,一个网络不是很快的来访者是不愿意访问一个充满着图片、flash 动画、多媒体文件的网站。为了使你的网站覆盖人群的范围最大化,你必须优化你的网站,使它的打开速度尽可能的快。

16 . Web Page Analyzer from Website Optimization 一个很好的工具,它在分析完一个网页后,会为减少加载时间提出优化建议,着重优化物体的数目,图片和网站的总体大小。( 强烈推荐

17 . WebSitePulse Test Tools 有一系列的工具来确定网站的加载速度和主机信息。

18 . Internet Supervision Url Check 从世界各地不同的服务器来测试你的网站的加载时间,用于确定是不是各地的来访者都能顺利快速的打开你得网站。

浏览器模拟工具

这是一个普遍的问题,因为现在有着很多的操作系统和浏览器,你得网站必须得兼容它们,但这绝不是一件容易的事。通过下列工具,你可以了解你得网站在各种浏览器上的显示效果。

19 . Browsershots能给出你的网站在不同浏览器下显示效果的截图,包括:Firefox 和 Internet Explorer ( Windows)、Firefox 和 Safari ( Mac OS X )、Iceweasal 和 Konqueror ( Linux ),但是结果要在1 - 3 小时后才能出来。

20 . IE NetRenderer 实时生成你的网站在 Internet Explorer 5.5 、6.0 和 7.0 下的截图。

21 . MobiReady Report 分析使用手机访问网页的兼容性问题,会生成一份详细的报告,并提供了在两种不同类型的手机浏览器上你得网站可能显示的样子。

搜索引擎优化 (SEO)

一个网站,如果对搜索引擎有着比较好的友好度,一定会比较有竞争力。

22 . UrlTrends 会显示网站的访客是如何通过搜索引擎来到你的网站,还有各个流量是多少。这些数据是包括 Google, Yahoo, MSN, Alexa, AlltheWeb, AltaVista 和其他一些网站。( 强烈推荐

23 . iWEBTOOL Backlink Checker 一个很好的工具,它能找出有什么站点链接到你的站点,那些站点是什么类型的站点。

24 . iWEBTOOL Multi-Rank Checker 显示你网站的 Alexa 和 Google PageRank 数值。

25 . Microsoft adCenter Labs: Advertising and Keyword Research Tools 一个极好的工具,用于分析和预测你网站的来访者和市场。( 强烈推荐

26 . Domain Tools Whois lookup 一个 WHOIS 网络工具。

27 . SEO-Browser 可以让你看到在搜索引擎眼里一样的网站( 去掉所有的”美丽”配件 )。

28 . SEO Workers SEO Analysis Tool 非常有用的工具,分析了网站上的各种分类特征,包括 meta 标签、关键字密度及加载时间。( 强烈推荐

29 . Seekport Seekbot 可以分析网站的数据和内容,以得出搜索引擎会如何有效的解释分析的网站。

30 . SEO Chat SEO Tools 用以分析网站 Google adsense 盈利潜力,关键字密度,Meta tag 等等……

31 . Marketleap Search Engine Marketing Tools 用来分析网页,让你知道你的网站检索、设定的关键字好不好。

原文:avivadirectory.com
译者:peterzsk
译文原地址:http://zsk.akaka.com.cn/2007/06/31-free-tests-online/
采用CC创作共用协议,转载可保留以上信息并<署名、非商业和保持一致>。

posted @ 2009-02-18 15:57 雪地孤鸿 阅读(259) | 评论 (0)编辑 收藏
opencrx的大名,我就不介绍了,请参考www.opencrx.com(官方网站)或www.opencrx.com.cn(中文网站),我使用的是opencrx2.1,关于opencrx的安装过程,无论是windows还是linux的安装过程也不需要多说了,官方网站有很好的安装说明文档,图文并茂,很是生动,几乎太会不会安装的了:),但是在启动的过程中,出现了一点小插曲,让我折腾了将近2个小时。下面就详细说明一下:
一、在windows下安装完成openmdxTomcatLwc-2.1.0和opencrx2.1.0之后,桌面上会出现五个快捷方式,双击那个都不会正常的启动opencrx-server  的?关键是hsql会出现错误,他们需要组合使用才是有效的:),先启动Start Services for Tomcat+LWC 2.1.0 (8080)(双击该图标即可)启动openmdx service服务;然后在双击openCRX Server HSQLDB Console (9001)图标,启动hsql内存数据库,接着双击Start Tomcat+LWC 2.1.0 (8080)图标,启动opencrx-server服务,到此为止,如果没有看到任何异常,那就恭喜你了,服务完全启动成功了!!!!还有两个图标,一个是Login Tomcat+LWC 2.1.0 (8080),这个就是访问opencrx-server的登录页面的快捷方式而已,你在ie中输入地址也是可以的,另外一个就Stop Tomcat+LWC 2.1.0 (8080),停止所有的web服务(openmdx-service和opencrx-server),最后的hsql服务需要手工停止。
   启动时需要组合拳,但是停止确实一键搞定,太让人郁闷了:(

二、在Linux下,安装过程可能并不向官方文档描述的那样,我们大部分所使用的linux应该是不太会支持图形界面的,但是官方的安装文档给出的是有图形界面的,和window下极其相似,不过也没有关系,只要是使用过linux(入门级即可)的应该都可以根据提示完成安装。不过在官方文档的最后,在启动opencrx-server的描述中,给出了一句极具误导性的话“Start Tomcat to start the openCRX Server”,也有可能是偶的e文不好的原因,反正我是理解为启动tomcat即可了。后经验证,其实是需要通过"/installdir/opencrx2.1/bin/control.sh START"命令来启动才可以。注意control.sh的参数“START”.linux下面的启动过程比windows下稍微有好一点:)


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

posted @ 2008-07-26 17:00 雪地孤鸿 阅读(4319) | 评论 (2)编辑 收藏
关于JForum论坛的基本情况就不在此介绍了,官方网址:www.jforum.net.jforum论坛系统的安装也很简单,按照官方文档,或者google一下,基本都可以搞定,在此就不在介绍了。大概描述一下我使用jforum的情况:
1.应用服务器:weblogic8.1
2.数据库:oracle10g
3.已有一个电子商务网站,需要和jforum进行简单的集成,提供sso(单点登录的功能)。
4.说明:已有的电子商务网站域名:http://www.123.com jforum域名:www.123.com/forum,电子商务网站和jfroum在统一台服务器和同一应用服务器下,如果分开可能会存在session或cookie访问的问题。
5.JForum版本:2.1.8
下面简要的介绍一下使用cookie进行jforum和电子商务网站的sso集成的过程:
(1)实现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文件中的一下属性的内容:
    authentication.type = sso
    sso.implementation = net.jforum.sso.CookieUserSSO
    sso.redirect = http://www.123.com/login.jsp //可根据实际的登录页面地址进行修改

    cookie.name.user = 123UserInfo //电子商务网站中保存的cookie名称,可根据实际情况修改

(3)修改web应用中的登录和注销部分的逻辑:
    登录部分加入以下代码:
   
...
    Cookie cookie = new Cookie("springTourUserInfo", sname);
     cookie.setMaxAge(-1);
     cookie.setPath("/");//cookie只在同一应用服务器有效
     response.addCookie(cookie);

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

    ......
(4)在电子商务网站增加论坛的链接:
    <a href="/forum">论坛</a>

基本配置完整,测试通过,如有问题,欢迎交流!

感谢网友提供的资料:
http://www.lifevv.com/java/doc/20080305224358885.html?page=0
http://www.99inf.net/SoftwareDev/Java/54230.htm(作者:王保政)


   

posted @ 2008-06-26 16:54 雪地孤鸿 阅读(4028) | 评论 (3)编辑 收藏
假设有webapp1, webapp2, cas server,webapp1, webapp2均受cas server保护
首先,我在这里简单解释一下:
第1种不能logout的情况:
1)登录了WebApp1,redirect到caserver
casserver认证后,再redirect到webapp1,ok!
2)http方式 lougout casserver1,即http://yale_casserver:8080/cas/lougout
显示logout成功
3)访问webapp2,还能访问!
这是非常正常的一种情况,因为你不通过https来注销,casserver怎么"杀"掉
它通过https发给你的TGC Cookie?

第2种不能logout的情况:
1)登录了WebApp1,redirect到caserver
casserver认证后,再redirect到webapp1,ok!
2)https方式 lougout casserver1,即https://yale_casserver:8443/cas/lougout
显示logout成功
3)访问webapp1,还能访问!访问webapp2,不能访问,重定向到casserver要求登录!
这也是非常正常的一种情况,因为你已经能够访问,你继续可以继续访问,
CASLogout不能阻止你访问webapp1,它只能阻止你访问webapp2,因为你已经
被允许访问webapp1,而webapp2则还没有,如果你在(1)的时候,顺带也访问
webapp2,那么你的注销将毫无作用了,CAS无法阻止你访问这两个webapp,
因为你有Service Ticket。

如果你对此费解,那时因为你已为Logout就是退出系统,那我只能表示遗憾,
因为CAS Logout的作用不是这样,它的作用是阻止你继续通过TGC(它简单地
清楚了IE的TGC Cookie)来获取ST,阻止你获取通向其他web应用的Ticket。

所以,用完webapp1的时候,注销,然后再关闭掉IE就彻底Logout了。
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1503551
posted @ 2008-03-28 16:16 雪地孤鸿 阅读(878) | 评论 (0)编辑 收藏
今天花了一个下午的时间,终于完成的cas配置的一次完整的运行。cas前世今生我就不介绍了,有兴趣的朋友谷歌或是百度一下就可以有很详细的了解了,重点记录一下今天的配置过程和遇到的问题及解决方法。
环境:浏览器(ie6.0,windows xp)
    cas server 在一台Linux服务器,cas client在另外一台linux服务器
    应用服务器为tomcat5.5.26
初步的配置实用过程参考了http://www.blogjava.net/yida/archive/2007/04/03/55466.html的描述,各位亦可以访问阿木的blog。整理如下:
1.请下载到cas的官方网站下载cas-server(我用的是3.2)和cas-client(2.0.11),tomcat5.5.26
    cas的官方网站:http://www.ja-sig.org/products/cas/
2.安装cas-server,我们假定安装cas-server的服务器为server1
    (1)请在server1服务器上安装好jdk1.5或以上版本的jdk,tomcat5.5.26,并配置环境变量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)导出server1的证书,
用来给所有需要用到的客户端导入
               
keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file
         
(6)将导出的证书上传的client1服务器上。
          (7)启动server1上的tomcat,检验cas配置是否成功,访问http://ip:8443/cas/login,如果能看到cas的登录页面则表示配                置成功。
3.配置 cas-client,我们以tomcat下自带的servlet-example为例子进行说明
    (1)
请在client1服务器上安装好jdk1.5或以上版本的jdk,tomcat5.5.26,并配置环境变量JAVA_HOME
  (2)
将cas-client-2.0.11.zip解压,把java/lib/casclient.jar拷贝到client1服务器上的
            webapps/servlets-examples/WEB-INF/lib目录下(如果没有就建一个)

  (3)在要使用CAS的客户端client1里设置(以servlets-examples这个APP为例),我们使用ServletFilter(CAS client里提供            的)来实现SSO的检查,修改servlets-examples/WEB-INF/web.xml,添加以下内容:
          <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里导入信任的SERVER的证书(根据情况有可能需要管理员权限)
            
keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias my-alias-name
             此时需要输入密码,默认密码为changeit
通过以上配置,基本完成cas-server和cas-client的配置,但是还有以下问题需要注意和解决
由于cas的证书需要域名才能正确的进行认证信息的交互,不支持ip,如果server和client在同一台机器上,可以使用localhost,如果像我们上面描述的三台服务器这样的环境,使用localhost或者ip是不能正常运行的。如果使用ip,运行时会抛出
HTTPS hostname wrong 的错误,解决的方法如下:
假设server1的ip为:192.168.10.1,client1的ip为192.168.10.2,开发机器(xp)的ip为:192.168.10.3
在server1和client1上设置本机的域名映射:
vi /etc/hosts 添加以下行
192.168.10.1 cas.server
在开发机器(xp)下,在C:\WINDOWS\system32\drivers\etc目录下,编辑hosts文件,添加以下行
192.168.10.1 cas.server

重新生成cas-sever的服务器端的证书,在开始问“你的名字”或“DName”的时候,必须填写你服务器所在域名(cas.server)
然后重新到处服务器器端的证书,并将其导入到client1服务器的jvm

最后修改
修改servlets-examples/WEB-INF/web.xml中关于cas过滤器的配置:请将your.cas.server.name(eg:server1)修改为cas.server即可。重新启动server1和client1的服务器上的tomcat就可正常运行。


ttp://client1:8080/servlets-examples/servlet/HelloWorldExample
系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,严正通过之后就会访问
到真正的HelloWorldExample这个servlet了


posted @ 2008-03-25 18:05 雪地孤鸿 阅读(4727) | 评论 (0)编辑 收藏
使用jbossTools创建seam website项目的注意事项,由于seam2.0本身标榜的口号是“企业级的java应用程序框框架”,关键的卖点是“JSF和ejb3.0的深度集成”,所以使用jbossTools工具生成项目结构是,也就天然的对ejb3.0的支持较好,但是如果不使用实体bean之类的东东,就需要对生成的项目的进行适当的修改才可以正常的运行。我想这是jbossTools或是seam框架本身需要改进的地方,jbossTools向导不能根据客户的需求很好的定制生成项目框架,表现的很不友好,对于初学者来说,很容易产生混淆。经过将近两天的测试,现总结如下(以seam2.0的example中hibernate2为例):
1.重建为jboss4.2下的seam2.0+hibernate项目:
需要注意的是:1.通过jbosstools工具生成的项目下面仍然会有“persistence.xml”这个文件存在,如果发布到jboss应用服务器下,仍然会导致jboss在启动时通过该文件进行相关的数据库连接。2.通过jbossTools生成的项目框架,都会默认的生成<项目名称>-ds.xml文件,如果需要使用该文件,需要单独发布,如果不需要,则要修改hibernate-cfg.xml文件的配置信息。
2.重建为tomcat6.0下的seam2.0+hibernate项目:
1.通过jbossTools无法之间在tomcat5.×下建立下项目框架,由于jsf1.2,seam1.2或seam2.0均需要serlet2.5,如果需要在tomcat5.×下创建项目,则只能进行手工配置。
2.在tomcat创建seam website项目,通过jbossTools无法创建完整的项目,相关的第三方包,需要从seam2.0的发布包中手动copy到当前下项目的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.数据源也需要手动配置,如果配置为tomcat的jndi,请参考tomcat的相关文档。
4.注意修改src/action和src/module源文件编译的输出路径到/WEB-INF/classes目录下,否则项目发布后可能会找到相关类路径的错误。
5.其他有jbossTools生成的无关文件可以删除。

在jboss4.2和tomcat6.0下通过jbossTools创建seam website项目框架需要注意的,暂时总结如上。本blog将持续更新有关seam2.0的学习心得。

欢迎交流!




posted @ 2008-03-17 14:16 雪地孤鸿 阅读(1736) | 评论 (3)编辑 收藏
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(17)

随笔分类

随笔档案

文章档案

blog

搜索

  •  

最新评论

阅读排行榜

评论排行榜