cas源碼導入
⑴ 什麼是cas單點登錄
CAS是一個單點登錄框架,開始是由耶魯大學的一個組織開發,後來歸到apereo去管。 同時CAS也是開源,遵循著apache 2.0協議,代碼目前是在github上管理。單點登錄:Single Sign On,簡稱SSO,SSO使得在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。CAS 是 Yale 大學發起的一個開源項目,旨在為 Web 應用系統提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個項目。cas單點登錄目前國內玉符科技技術實力可以,可以考察,望採納!
⑵ java 什麼情況下使用 並發隊列
並發隊列是一個基於鏈接節點的無界線程安全隊列,它採用先進先出的規則對節點進行排序,當我們添加一個元素的時候,它會添加到隊列的尾部,當我們獲取一個元素時,它會返回隊列頭部的元素。它採用了「wait-free」演算法來實現,該演算法在Michael
& Scott演算法上進行了一些修改。
入隊列
入隊列就是將入隊節點添加到隊列的尾部。為了方便理解入隊時隊列的變化,以及head節點和tair節點的變化,每添加一個節點我就做了一個隊列的快照圖。
publicEpoll(){
Node</e><e>h=head;
//p表示頭節點,需要出隊的節點
Node</e><e>p=h;
for(inthops=0;;hops++){
//獲取p節點的元素
Eitem=p.getItem();
//如果p節點的元素不為空,使用CAS設置p節點引用的元素為null,如果成功則返回p節點的元素。
if(item!=null&&p.casItem(item,null)){
if(hops>=HOPS){
//將p節點下一個節點設置成head節點
Node</e><e>q=p.getNext();
updateHead(h,(q!=null)?q:p);
}
returnitem;
}
//如果頭節點的元素為空或頭節點發生了變化,這說明頭節點已經被另外一個線程修改了。那麼獲取p節點的下一個節點
Node</e><e>next=succ(p);
//如果p的下一個節點也為空,說明這個隊列已經空了
if(next==null){
//更新頭節點。
updateHead(h,p);
break;
}
//如果下一個元素不為空,則將頭節點的下一個節點設置成頭節點
p=next;
}
returnnull;
}
首先獲取頭節點的元素,然後判斷頭節點元素是否為空,如果為空,表示另外一個線程已經進行了一次出隊操作將該節點的元素取走,如果不為空,則使用CAS的方式將頭節點的引用設置成null,如果CAS成功,則直接返回頭節點的元素,如果不成功,表示另外一個線程已經進行了一次出隊操作更新了head節點,導致元素發生了變化,需要重新獲取頭節點。
⑶ java web多個應用項目如何整合在一起
在不大規模改動代碼的情況下,我建議用開源的Yale CAS單點登陸。
我已基本實現了tomcat下Yale CAS配置「
相關文檔:
一、資源版本:
Tomcat5.0.28
cas-server-3.0.7
cas-client-2.0.11
二、Tomcat部署環境:
casserver——cas伺服器部署環境
casclient——cas客戶機部署環境(發布jsp-examples)
casclient1——cas客戶機部署環境(發布servlets-examples)
三、SSL文件准備:
server.keystore——伺服器端庫文件
client.keystore——客戶端庫文件
server.cer——伺服器端證書(自製)
client.cer——客戶端證書(自製)
cacerts——證書鏈
1、生成伺服器端庫文件
keytool -genkey -alias tomcat-server -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
2、導出伺服器端證書
keytool -export -alias tomcat-server -storepass changeit -file server.cer -keystore server.keystore
3、生成客戶端庫文件
keytool -genkey -alias tomcat-client -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore
4、導出客戶端證書
keytool -export -alias tomcat-client -storepass changeit -file client.cer -keystore client.keystore
5、導入伺服器端證書到cacerts
keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit
6、導入客戶端證書到cacerts
keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit
將server.keystore、client.keystore、server.cer、client.cer、cacerts文件復制到cas伺服器、cas客戶機、cas客戶機1的TOMCAT_HOME主目錄及JAVA_HOEM\jre\lib\security目錄下。
四、Tomcat下cas安裝部署
1、casserver配置
採用jakarta-tomcat-5.0.28.zip解壓後默認配置,重點注意Server port="8005"
及Connector port="8080" redirectPort="8443"(cas客戶端需改埠號)。
A、 編輯.\casserver\conf目錄下server.xml文件並保存。
找到如下片段,紅色字體為新增內容。
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/server.keystore" keystorePass="changeit"/>
B、拷貝cas.war至.\casserver\webapps目錄。
至此,cas伺服器部署完畢。啟動伺服器,訪問https://localhost:8443如能顯示Tomcat首頁則表示cas部署成功。
2、casclient配置
jakarta-tomcat-5.0.28.zip解壓後修改根目錄名為casclient。
A、編輯.\casclient\conf目錄下server.xml文件並保存。
找到如下片段,紅色字體為修改內容。
<Server port="8006" shutdown="SHUTDOWN" debug="0">
<Connector port="8081"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8080" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
B、編輯.\casclient\webapps\jsp-examples\WEB-INF目錄下web.xml文件並保存。
加入如下片段,重點注意紅色字體部分。
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>e.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>e.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>e.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>e.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8081</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
C、將casclient.jar拷貝至.\casclient\webapps\jsp-examples\WEB-INF\lib目錄下。
至此,cas客戶端部署完畢。啟動客戶伺服器,訪問http://localhost:8081/jsp-examples正常情況會彈出安全警報,點擊確認後轉向cas登錄頁面。此時casserver採用默認驗證,用戶名、口令輸入相同的字元串即可,驗證通過後轉向jsp-examples應用的默認頁面。
3、casclient1配置
jakarta-tomcat-5.0.28.zip解壓後修改根目錄名為casclient1。
D、編輯.\casclient1\conf目錄下server.xml文件並保存。
找到如下片段,紅色字體為修改內容。
<Server port="8007" shutdown="SHUTDOWN" debug="0">
<Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8080" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
E、編輯.\casclient1\webapps\servlets-examples\WEB-INF目錄下web.xml文件並保存。
加入如下片段,重點注意紅色字體部分。
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>e.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>e.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>e.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>e.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8082</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern> /servlet/*</url-pattern>
</filter-mapping>
將casclient.jar拷貝至.\casclient1\webapps\servlets-examples\WEB-INF\lib目錄下。至此,cas客戶端1部署完畢。啟動cas客戶1伺服器,訪問http://localhost:8082/servlets-examples/servlet/HelloWorldExample正常情況會彈出安全警報,點擊確認後轉向servlets-examples應用的HelloWorld頁面(此時由於cas客戶伺服器已經登錄,因此訪問servlets-examples時無需再進行登錄)。
cas伺服器、客戶端部署完成後即可實現統一認證服務。案例中把登錄認證部分的邏輯從jsp-examples、servlets-examples應用(此應用系統並無登錄邏輯,在實際應用中需修改相應的登錄驗證邏輯)中剝離,交由cas認證伺服器完成。
以上配置在windows XP professional上測試通過。
⑷ cas server 源碼怎麼打成jar
先打開命令提示符(win2000或在運行框里執行cmd命令,win98為DOS提示符),輸入jar Chelp,然後回車(如果你盤上已經有了jdk1.1或以上版本),看到什麼: 用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ... 選項: -c 創建